0

親オブジェクトを更新し、新しい子オブジェクトを更新および作成する update_attributes を使用する入れ子になったフォーム (RailsCasts に示されているものと非常によく似ています) があります。子オブジェクトが作成されたとき、子オブジェクトが更新されたとき、および親オブジェクトが更新されたときを区別できるようにしたいと考えています。とにかくそうすることがありますか?当面の目標は、新しい子オブジェクトが作成されたときにブロードキャストをプッシュすることです。

application_controller.rb でアクションを呼び出そうとしているため、子モデルで after_create do を使用しようとしてもうまくいきません。

コードは私の親オブジェクトコントローラーです

if @parent_object.update_attributes(params[:parent_object])
  ...want the push_broadcast to go here if it's a new record. 

デバッガーを使用すると、params[:parent_object] はこれを返します

{"overall_sharing"=>"1", "permissions_attributes"=>{"0"=>{"id"=>"66"}, "1"=>  {"can_edit"=>"1", "can_copy"=>"1", "_destroy"=>"false", "id"=>"74"}, "1341967403169"=>{"user_id"=>"171", "can_edit"=>"1", "can_copy"=>"1", "_destroy"=>"false", "note_id"=>"423"}}}

参考までに、最後の部分は新しい子オブジェクト、最初の部分は親オブジェクトの更新、真ん中は子オブジェクトの更新です。

正しいパスがパラメーターをいじろうとするのか、それとも別のルートを考えようとするのかはわかりません。アドバイスをいただければ幸いです。

ありがとう、ウェルズ

4

2 に答える 2

0

新しいレコードの場合、ID はありません。編集時や更新時とは異なります。

見つけてみてください。できないなら新品です。

if params[:id]
  #existing record
else
  #new record
end
于 2012-07-11T04:42:38.493 に答える
0

Rails api には、ネストされた属性に関する優れたドキュメントがあります。(私の意見では、Railsガイドはこの点で不十分です)。あなたの質問のほとんどに答えるべきだと思います。

于 2012-07-12T02:41:29.757 に答える