获取儿童类别的产品

时间:2013-10-24 11:49:19

标签: ruby-on-rails parent-child

我有一个名为群组的模型,它是自我指涉的,其中有群体 - 父母和孩子在一起,由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(或其他分页器)这样的东西对它们进行分页,那会更好。

P.S。我尝试插入像has_many :products, through: :children这样的内容,但我得到的只是Stack level is too deep ...

P.P.S。我可以创建以Hash收集所有产品的方法,但我无法按标题,价格等对产品列表进行排序。

1 个答案:

答案 0 :(得分: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