Реализация дерева со ссылкой на корень для каждого листа - PullRequest
0 голосов
/ 20 мая 2010

Я реализую каталог продуктов, который выглядит примерно так:

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 в его самой верхней группе CatalogGoo и назвал эту ассоциацию "catalog_root_group".

Это даст нам простую реализацию поискового запроса, например, «показать мне все элементы в группе 1».

Мы будем иметь дело только с CatalogModel.catalog_root_group

Проблема в том, что эта ассоциация не работает. Я всегда получаю "catalog_root_group" равным нулю

Кроме того, я попытался преодолеть использование ссылки на корневую группу ("catalog_root_group"), но не могу создать соответствующий поисковый запрос в ruby ​​...

Вы знаете, как это сделать?

1 Ответ

1 голос
/ 23 мая 2010

Часы act_as_category камень, мужчина.

...