Вложенные категории с монгоидом - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть модель mongoid с некоторыми записями, и я хочу организовать их по категориям.Категории должны иметь такую ​​возможность:

Videos:
-Car video
-Gadgets Video
--iPad
--Android
Music:
-Pop
--Madonna
-Rap
--2pac
--50cent

Как я могу сделать это с mongoid ?Порядок категорий не имеет значения.

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011

Вы можете использовать Mongoid Nested Set :

class Category
  include Mongoid::Document
  acts_as_nested_set
end

ОБНОВЛЕНО

Существуют различные образцы Деревьев в MongoDB . Acts_as_nested_set - это решение DRTW (не изобретать велосипед), но другие могут подойти вам лучше.

1 голос
/ 06 апреля 2012

Для вложенного множества mongoid правильная ссылка: https://github.com/thinkwell/mongoid_nested_set.

Действительно хорошая библиотека. acts_as_nested использует меньше запросов.

1 голос
/ 22 февраля 2011

Я реализовал модель вложенной категории с ' mongoid_tree '.Это довольно просто.

root = Category.new { :name => "Root Category" }
child = Category.new { :name => "Child Category" }
childs_child = Category.new { :name => "Child Child Category" }

root.children << child
root.save
child.children << childs_child
child.save

# get all root categories
Category.where("parent_ids" => []).first
 => "#<Category _id: 4d63cbdf2507e40d03000018, child_ids: [BSON::ObjectId('4d63cbdf2507e40d03000019')], parent_ids: [], name: \"Root Category\">" 

Джулиан

...