我有Project
模型,其属于Company
和Notary
。 Notary
belongs_to Company
。
在我的Project
模型中,我有以下getter / setter方法:
class Project < ActiveRecord::Base
belongs_to :company
belongs_to :notary
# getter method for Notary
def notary_name
notary.try(:name)
end
# setter method
def notary_name=(name)
self.notary = Notary.find_or_create_by(name: name) if name.present?
end
end
setter方法检查某个Notary是否存在,否则创建一个新记录。
这个问题是,如果另一个Company
的用户输入现有的公证人名称,则不会创建新记录。
语法应该是这样的:
self.notary = current_company.notaries.find_or_create_by(name: name) if name.present?
但是current_company
在模型级别不可用。有什么建议如何解决这个问题?