2011-12-21 6 views
0

Я новичок в Mongo и Mongoid и имею довольно сложную модель данных, где я пытаюсь существенно запросить отношение «многие-ко-многим» и не получать никаких данных назад хотя я проверял, что идентификаторы, похоже, совпадают.Mongoid Много-много запросов возвращается Не Документы

Модель данных выглядит следующим образом (приветствуются предложения, если лучший способ это сделать):

class User 
    has_one :item_list #favorite items 
    has_one :store_list #favorite stores 

class ItemList 
    belongs_to :user 
    has_and_belongs_to_many :items 

class StoreList 
    belongs_to :user 
    has_and_belongs_to_many :stores 

class Item 
    belongs_to :artist 
    has_and_belongs_to_many :stores 
    has_and_belongs_to_many :item_lists 

class Store 
    has_many :versions 
    has_and_belongs_to_many :store_lists 

class Version 
    belongs_to :item 
    belongs_to :store 

По предложению я прочитал в Интернете, пытаюсь получить версии пунктов списка избранного пользователя в конкретном магазине (хотя осталось только конкретный магазин часть, так как не могут даже получить через весь список версий) как так:

@favorite_item_ids = current_user.item_list.items.only(:_id).map(&:_id) 
@my_items_here = Version.all_in(item_id: @favorite_item_ids) 

я печатаю идентификатор, которые являются как таковой, так должно быть, по крайней мере 1 матч, но @my_items_here имеет длину 0

@favorite_item_ids
[BSON :: ObjectId ('4ede1ec254663443fe000011'), ...]

Version.all.only (: item_id) .map (&: item_id)
[BSON :: ObjectId ('4ede1ec254663443fe000011'), ...]

Цените любую помощь!

Версии: Mongoid 2.3.4 камень Монго 2.0.1 Rails 3.1

+0

Любое обновление на это? Если он ответит на ваш вопрос, пожалуйста, примите ответ. –

ответ

1

Попробуйте это:

@favorite_item_ids = current_user.item_list.items.distinct(:_id) 
@my_items_here = Version.where(:item_id.in => @favorite_item_ids) 
+0

Работает как шарм! – RSB

Смежные вопросы