Mongoid возвращает запрос «многие ко многим», а не документы - PullRequest
0 голосов
/ 21 декабря 2011

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

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

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)

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

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

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

Благодарим за любую помощь!

Версии: mongoid 2.3.4 самоцвета монго 2.0.1 рельсы 3.1

1 Ответ

1 голос
/ 21 декабря 2011

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

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