mongoid add_to_set中的未定义方法`bson_type'

时间:2014-05-01 14:47:25

标签: ruby-on-rails mongoid

在添加要设置的对象时不确定我做错了什么,我在下一行收到错误undefined method 'bson_type' for #<Favorite:0x007ffadd59ba48>

favorite = Favorite.new(
        item_id: params[:item_id],
        item_type: params[:item_type],
        duid: params[:duid],
        name: params[:name]
)

profile.add_to_set(favorites: favorite)

模型

class Favorite
  include Mongoid::Document
  embedded_in :profile
  field :item_id, type: String
  field :item_type, type: String
  field :name, type: String
  field :duid, type: String
end
class Profile
  include Mongoid::Document
  field :profile_id, type: String
  field :name, type: String
  field :image, type: String
  embeds_many :favorites
end

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是使用:

favorite = Favorite.new(item_id: params[:item_id], ... yada yada)
favorite.profile = profile
favorite.save!

解决此问题的另一种方法是使用以下代码 - 我个人更喜欢 -

profile.favorites.create!( item_id: params[:item_id], ...yada yada )

额外信息可以是igonred

class Profile
  ...
  embeds_many :favorites, cascade_callbacks: true
  ...
end

允许运行Favorite模型中找到的回调