JSONに問題はありません。問題はセキュリティの1つです。Railsは、デフォルトで特定の属性を巨大なハッシュから作成または更新されないように保護します。これは、「質量割り当て」という用語を使用するときにエラーが参照しているものです。
投稿したJSON:
Parameters: {"id"=>1, "updated_at"=>"2011-04-21T16:41:02Z"}, "created_at"=>"2012-02-23T21:01:02Z", "action"=>"test update"}
およびフィールドが含まれてid
います。このJSONがアクションに渡され、ハッシュがで使用されると、このエラーが発生します。このエラーを回避するには、ハッシュからフィールドを削除して後で割り当てるか、理想的には、ActiveRecordを機能させて、それらを無視します。created_at
updated_at
model_object.update_attributes(hash_fields)
本当にそれらを割り当てる必要がある場合は、次のように行うことができます。
model_object.id = id_variable
model_object.created_at = created_at_variable
model_object.updated_at = updated_at_variable
model_object.save
EDIT1(IDの返送に関するコメントに対処するため):
RailsRESTモデルを使用してcontroller/:id / action urlを呼び出す場合、その情報はすでにURLに埋め込まれているため、IDを返す必要はありません。経由でアクセスでき、経由params[:id]
でハッシュにアクセスできますparams[:model_name]
(Railsモデルに従います)。
何か別のことをしていて、IDが返されるJSONに含まれている必要がある場合は、簡単に行うことができますid = params[:model_name][:id].delete
。これにより、ハッシュからIDが削除され、1回の呼び出しで値が返されます。それは理想的ではありませんが、ピンチで仕事を成し遂げることができます。