我是Mongo和Mongoid的新手,并且有一个相当复杂的数据模型,我试图基本上查询多对多关系并且没有获得任何数据,即使我已经验证了id似乎匹配。
数据模型如下(如果有更好的方法,欢迎提出建议):
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,因此应至少匹配一次,但@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宝石 mongo 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)