嵌入文档不能包含其他模型 ID?未定义的方法`bson_type'
Embedded document cannot hold other model IDs ? undefined method `bson_type'
要么是我还没有理解嵌入文档的局限性,要么就是一个 bug :
我希望我的通知具有对 "sender" 用户模型的引用。但是,我不关心能否找到给定用户发送的通知。我认为此设置可行:
编辑:问题出在我的习惯 setter
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>
这可能会有所帮助,可能只是一个观察结果。
sender=
正在覆盖 Rails 方法,所以你可能会从中得到一些奇怪的东西。我会这样做:
def sender=(someone)
someone = someone.is_a?(User) ? someone : someone.user
super(someone)
end
希望对您有所帮助!
我现在想自杀...
def sender=(someone)
self[:sender] = (someone.is_a?(User) ? someone : someone.user).id
end
要么是我还没有理解嵌入文档的局限性,要么就是一个 bug :
我希望我的通知具有对 "sender" 用户模型的引用。但是,我不关心能否找到给定用户发送的通知。我认为此设置可行:
编辑:问题出在我的习惯 setter
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>
这可能会有所帮助,可能只是一个观察结果。
sender=
正在覆盖 Rails 方法,所以你可能会从中得到一些奇怪的东西。我会这样做:
def sender=(someone)
someone = someone.is_a?(User) ? someone : someone.user
super(someone)
end
希望对您有所帮助!
我现在想自杀...
def sender=(someone)
self[:sender] = (someone.is_a?(User) ? someone : someone.user).id
end