1

我在使用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将一个添加AccountSubmission. 我知道还有其他方法可以通过编写特定代码来链接这些文档。但是正常的 rails 方式应该允许我使用 HTML 表单以这种方式更新文档,对吧?

4

2 回答 2

1

这不是添加sa. 你想要做的是:

a = Account.new
a.submissions << Submission.new
a.save!
于 2013-02-12T00:33:16.913 回答
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

它在做什么很奇怪。也许是蒙古虫?

于 2013-02-12T17:40:19.490 回答