ruby on rails-Mongoid update_attributes创建新的引用文档



我在将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!

相关内容

  • 没有找到相关文章

最新更新