我在将update_attributes
与引用的文档一起使用时遇到问题。我把我的问题简化为一个简单的例子,AFAICT应该起作用,但不起作用:
class Account
include Mongoid::Document
has_many :submissions, :autosave => true
end
class Submission
include Mongoid::Document
belongs_to :account
end
a = Account.new
a.save!
s = Submission.new
s.update_attributes({"account" => {"id" => a.id}})
s.save!
a.id == s.account.id # false
对update_attributes
的调用是创建一个新的空白Account
对象,而不是引用我要它使用的现有对象。怎么回事?
更新
需要明确的是,我正在尝试在update
操作中处理一个HTML表单,该操作将Account
添加到Submission
中。我知道还有其他方法可以通过编写特定代码来链接这些文档。但是普通的rails方式应该允许我使用HTML表单以这种方式更新文档,对吧?
将HTML表单更改为"account_id"而不是"account[id]",然后它开始工作:
s.update_attributes({"account_id" => a.id})
s.save!
a.id == s.account.id # true
a == s.account # true
它在做什么很奇怪。也许是mongoid bug?
这不是将s
添加到a
的方法。你想做的是:
a = Account.new
a.submissions << Submission.new
a.save!