2

我在 Rails 3.0 上,并试图弄清楚什么是正确的方法来设置一个 belongs_to :through 关系(我知道这是不可能的)。这是一个例子:

class ParentCompany < ActiveRecord::Base
  has_many :subsidiaries
  has_many :employees, :through => :subsidiaries
end

class Subsidiary < ActiveRecord::Base
  belongs_to :parent_company
  has_many :employees
end

class Employee < ActiveRecord::Base
  belongs_to :subsidiary
  belongs_to :parent_company, :through :subsidiary # <-- I know this is invalid
end

我知道我可以通过以下方式解决它:

class Employee < ActiveRecord::Base
  def parent_company
    subsidiary.parent_company
  end
end

但是,我想知道我是否可以通过关联进行上述操作。

4

1 回答 1

1

您可以delegate在不使用关联的情况下使用它来完成此操作

class Employee < ActiveRecord::Base
  belongs_to :subsidiary
  delegate :parent_company, to: :subsidiary
end
于 2014-06-28T05:22:19.867 回答