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明確にするために、を に追加するアクションでHTML フォームを処理しようとしてAccountSubmissionます。特定のコードを記述してこれらのドキュメントをリンクする他の方法があることを理解しています。しかし、通常の Rails の方法では、HTML フォームを使用してこの方法でドキュメントを更新できるはずですよね?

4

2 に答える 2

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 に答える
1

sに追加する方法ではありませんa。あなたがしたいことはこれです:

a = Account.new
a.submissions << Submission.new
a.save!
于 2013-02-12T00:33:16.913 に答える