Rails:如何在关联中创建setter方法find_or_create?

时间:2016-04-19 19:52:36

标签: ruby-on-rails model getter-setter

我有Project模型,其属于CompanyNotaryNotary 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在模型级别不可用。有什么建议如何解决这个问题?

0 个答案:

没有答案