0

これは のupdateアクションですnotes_controller.rb

def update
    note = current_user.notes.find(params[:id])
    note.update_attributes! params[:note]
    render json: {note: note.display}
end

それは正常に動作します。

私のnoteオブジェクトには というdatetimeフィールドがありますscheduled_time。クライアント側JSONのアクションからデータが返されたら、メモの更新日が.updatescheduled_timeupdate

def update
    note = current_user.notes.find(params[:id])
    previous_date = note.scheduled_time.to_date
    note.update_attributes! params[:note]
    date_changed = previous_date != note.scheduled_time.to_date
    render json: {note: note.display, date_changed: date_changed}
end

JSONしかし、このコードを追加すると、 data( note.display)で返されるメモupdate_attributes!. はupdate_attributes!引き続き機能しますがJSON、アクションから返されたデータにupdateは更新が反映されていません。なぜこれが起こるのでしょうか?

私は使用しています

Rails 3.2.0
ruby 1.9.3

また、ノートモデルでは一般的にMemoist gemを使用していますが、display特にメソッドでは使用していません。

4

2 に答える 2

1

問題は、note 変数の割り当てであり、#update_attributes! の結果セットで更新されていないようです。進行中のフックやオブザーバーはありますか?

Note オブジェクトを直接使用してみてください。

Note.where(user_id: current_user.id, id: params[:id])

または、他のすべてが失敗した場合は、次を試してください。

{display: note.reload.display ... }

あなたが使用している Memoist gem と何か関係があるようですが、これに飛び込んでシミュレートしないと確信が持てません。

于 2012-10-18T11:03:50.817 に答える
0

note.update_attributes! params[:note]試して実行した後note.reload、アクティブな関係を現在データベースにあるものにリロードします

于 2012-10-18T13:20:39.110 に答える