我仍然无法理解嵌入式文档的局限性,或者它是一个错误:
我希望我的通知能够引用"发件人"用户模型。但是,我并不关心能够找到给定用户发送的通知。我认为这个设置会起作用:
编辑:问题来自我的自定义设置器
class User
embeds_many :notifications
class Notification
embedded_in :user
belongs_to :sender, class_name: "User", inverse_of: nil
def sender=(someone)
self[:sender] = (someone.is_a?(User) ? someone : someone.user)
end
现在在控制台中:
user_a.notifications.create!(sender: user_b)
抛出一个
NoMethodError: undefined method `bson_type' for #<User:0x83dd590>
答案 0 :(得分:1)
我现在要自杀...
def sender=(someone)
self[:sender] = (someone.is_a?(User) ? someone : someone.user).id
end
答案 1 :(得分:0)
这可能有所帮助,可能仅仅是一种观察。
sender=
正在覆盖Rails方法,所以你可能会从中获得一些奇怪的东西。我愿意:
def sender=(someone)
someone = someone.is_a?(User) ? someone : someone.user
super(someone)
end
希望有所帮助!