0

我有一个模型,称为 Groups,它是自我参照的,其中有组 - 父母和孩子在一起,通过parent_id. 所以我可以让一个组的孩子和产品连接到一个组,但是我怎样才能通过它的孩子获得父组的所有产品?这是我的模型:

class Group < ActiveRecord::Base
  belongs_to :parent, class_name: 'Group', foreign_key: :parent_id
  has_many :children, class_name: 'Group', foreign_key: :parent_id
  has_many :products

  validates :id, uniqueness: true

  self.primary_key = :id
end

例如,如果我可以调用group.products并获取所有产品,这些产品是该组的直接后代以及儿童组的所有产品,那就太好了。如果我可以用 Kaminari(或其他分页器)之类的东西对它们进行分页,那就更好了。

PS我试图插入类似的东西has_many :products, through: :children,但我得到的只是Stack level is too deep......

PPS 我可以创建方法来收集哈希中的所有产品,但我无法按标题、价格等对产品列表进行排序。

4

1 回答 1

0

试试这个

class Group < ActiveRecord::Base
  belongs_to :parent, class_name: 'Group', foreign_key: :parent_id
  has_many :children, class_name: 'Group', foreign_key: :parent_id
  has_many :products

  has_many :child_products, :through => :children, :source => :products

  validates :id, uniqueness: true

  self.primary_key = :id
end
于 2013-10-24T12:59:26.407 回答