Mongoid update_attributes创建新的引用文档

时间:2013-02-11 19:18:16

标签: ruby-on-rails ruby ruby-on-rails-3 mongoid database-relations

我在使用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表单以这种方式更新文档,对吗?

2 个答案:

答案 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?