嗨,我使用表單對象重構模式。 我有兩個模型,項目和用戶。這樣Rails使用不同的名稱代表
Project.first.name # "Buy milk"
User.first.name # "John Doe"
我有一個表單接受項目的名稱和用戶的名稱。
class UserForm
include ActiveModel::Model
def initialize(name:'', project_name:'')
@name = name
@project_name = project_name
end
def persisted?
false
end
def self.model_name
ActiveModel::Name.new(self, nil, "ProjectForm")
end
delegate :name, :email, to: :user
delegate :project_name, to: :project # PROBLEM: project has #name not #project_name method
def user
@user ||= User.new
end
def project
@project ||= Project.new
end
end
的主要問題在於初始化和代碼的代表組成部分,因爲這兩個項目和用戶有一個字段名,所以我不能有@name兩個在initialize。有沒有辦法像
delegate name: :project_name?
謝謝!