Mongoid没有将新文档推入has_many关系

时间:2014-03-04 03:40:24

标签: ruby-on-rails devise mongoid

我有一个Devise使用的具有以下关系的用户类

class User
  has_many :listings, dependent: :delete
  has_many :favorites, :class_name => 'Listing', as: :favorites, dependent: :delete

列表类

class Listing
  belongs_to :user
  belongs_to :favorites, :class_name => 'User', :inverse_of => :favorites

我可以推current_user.listings << listing,但我无法推current_user.favorites << listing

推送似乎很好,不会抛出任何错误,但是当我要求current_user.favorites时,我得到0结果。

我想知道我是否正确设置了这种关系?

1 个答案:

答案 0 :(得分:1)

更新:

您需要添加名为Favorite的新模型并包含2个字段:listing_iduser_id,因为用户和收藏夹之间的关系是多对多。

或者,您需要将Listing模型中的收藏类型更改为Array,如下所示:

field :favorites, type: Array

另外,删除has_many :favorites ...模型中的User并添加一个getter方法:

def favorites
  Listing.where(favorites: self.id)
end

和一个setter方法:

def favorites=(listing)
  Listing.find(listing.id).add_to_set(favorites: self.id)
end