开发者

Implementing the tree with reference to the root for each leaf

i implementing a products catalog, that looks, like this:

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

The Models:

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

Migrations:

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

For convenience, i referenced each CatalogItem to it's top-most CatalogGroup and named this association "catalog_root_group".

This will give us the simple implementation of search request, like "show me all items in group 1".

We will have a deal only with CatalogModel.catalog_root_group

The problem is - this association does't work. I always get "catalog_root_group" equals to nil

Also, i have tried to overcome the using of reference to root group ("catalog_root_group"), but i cannot construct approp开发者_高级运维riate search request in ruby ...

Do you know, how to do it ?


Watch act_as_category gem, man.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜