Carrierwave を使用するアプリケーションを Rails 4 に移植していますが、強力なパラメーターに問題があります。私はモデルを持っています
accepts_nested_attributes_for :photos
アップロードされた画像が渡される方法は次のとおりです。
{
# ...
"model"=>
{
# ...
"photos_attributes"=>
{
"1362752177921"=>
{
"image"=>"test.jpg",
}
}
}
}
しかし、私は受け入れるパラメータを書く方法を理解できないようですphotos_attributes
.
私は試しましたが、保存する前に作成され.permit(photos_attributes: [])
た を使用すると、SQLに表示されず、これが2番目の問題です。permit!
uuid
photos.uuid may not be NULL: INSERT INTO "photos" ("created_at", "model_id", "image", "title", "updated_at") VALUES (?, ?, ?, ?, ?)
ここには強力なパラメーターのドキュメントが不足しており、続行する方法もわかりません。
更新 これは、ネストされた属性で機能しました:
params.permit( ..., :photos_attributes => ['id', 'title', 'image', '_destroy'])
ただし、Rails 4 用に Carrierwave または Nested Form を最初に更新する必要があるようです。常に空の画像を保存しようとします。Rails 3 でも同じコード (strong_params なし) が機能します。