参考每个叶子的根来实现树

时间:2010-05-20 15:49:55

标签: ruby-on-rails model tree associations

我实施的产品目录看起来像这样:

group 1
   subgroup 1
   subgroup 2
      item 1
      item 2
      ...
      item n
   ...
   subgroup n
group 2
   subgroup 1
   ...
   subgroup n
group 3
...
group n

模特:

class CatalogGroup < ActiveRecord::Base
   has_many: catalog_items
   has_many :catalog_items_all, :class_name => "CatalogItem", :foreign_key => "catalog_root_group_id"
end

class CatalogItem < ActiveRecord::Base
   belongs_to :catalog_group
   belongs_to :catalog_root_group, :class_name => "CatalogGroup"
end

迁移:

class CreateCatalogItems < ActiveRecord::Migration
   def self.up
       create_table :catalog_items do |t|
       t.integer :catalog_group_id
       t.integer :catalog_root_group_id
       t.string :code

       t.timestamps
   end
 end

为方便起见,我将每个CatalogItem引用到它最顶层的CatalogGroup,并将此关联命名为“catalog_root_group”。

这将为我们提供搜索请求的简单实现,例如“向我显示组1中的所有项目”。

我们只与CatalogModel.catalog_root_group

达成协议

问题是 - 这种关联不起作用。我总是得到“catalog_root_group”等于nil

另外,我试图克服使用对root组的引用(“catalog_root_group”),但我无法在ruby中构建适当的搜索请求...

你知道吗,怎么做?

1 个答案:

答案 0 :(得分:1)

观看act_as_category gem,man。