我在使用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表单以这种方式更新文档,对吗?
答案 0 :(得分:1)
这不是将s
添加到a
的方法。你想要做的是:
a = Account.new
a.submissions << Submission.new
a.save!
答案 1 :(得分:1)
更改您的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?