【问题标题】:has_many nested to many models in Railshas_many 嵌套在 Rails 中的多个模型中
【发布时间】:2016-03-09 13:50:37
【问题描述】:

我在 rails 中有 4 个不同的模型,它们之间有一个 has_many 和 belongs_to 关联。例如:

class Apple < AR::Base
  has_many :bananas
end

class Banana < AR::Base
  belongs_to :apple
  has_many :oranges
end

class Orange < AR::Base
  belongs_to :banana
  has_many :berries
end

class Berry < AR::Base
  belongs_to :orange
end 

现在,如果我写,比如@apple.berries,我应该得到属于那个苹果的浆果列表。那么我应该如何定义这个关联呢?我的一位朋友告诉我使用逆多态关联。不知道是否与上述问题有关。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    这里你真正需要的是has_many + through 关系。现在,Apple 对象确实包含 Berry 对象,但 Apple 对象不直接包含它们。所以我们需要明确地告诉它:

    class Apple < ActiveRecord::Base
      has_many :bananas
      has_many :berries, through: :bananas
    end
    
    class Banana < ActiveRecord::Base
      belongs_to :apple
      has_many :oranges
      has_many :berries, through: :oranges
    end
    

    现在,您可以直接在Apple 对象和Banana 对象上使用berries

    【讨论】:

    • 感谢您的回答...有没有其他方法可以写出Apple和Berry之间的关联
    • 还有:你可以将apple_id存储在berries表中,但我认为这会是多余的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多