Mongoid 从多对多关联中获取模型

Mongoid get models from many to many association

我有 UserShopFavouriteShop 模型。我正在使用 mongoid:

class User
   include Mongoid::Document
   has_many :favourite_shops, dependent: :destroy
end

class Shop
   include Mongoid::Document
   has_many :favourite_shops, dependent: :destroy
end

class FavouriteShop
   include Mongoid::Document
   include Mongoid::Timestamps

   belongs_to :user
   belongs_to :shop
end

如您所见,UserShop 通过 FavouriteShop.

存在多对多关系

现在如果我有一个用户:

user = User.all.first

如何获取与用户关联的所有商店?

通过使用 user.favourite_shops.map(&:shop),您只需在每个用户的 favourite_shops 上调用 #shop 并接收一系列相关商店。换句话说,您将每个 favourite_shops 替换为关联的 shop

如果您想以 Mongoid 的方式做到这一点,请考虑这个 post How to implement has_many :through relationships with Mongoid and mongodb?.