Ich portiere eine Anwendung, die Carrierwave zu Rails 4 verwendet, aber ich habe Probleme mit starken Params. Ich habe ein Modell mitDatei-Upload mit Rails 4, starke Parameter und Carrierwave
accepts_nested_attributes_for :photos
Hier ist, wie hochgeladene Bilder übergeben werden:
{
# ...
"model"=>
{
# ...
"photos_attributes"=>
{
"1362752177921"=>
{
"image"=>"test.jpg",
}
}
}
}
aber ich nicht scheinen, um herauszufinden, wie kann Parameter schreiben, die photos_attributes
akzeptieren.
Ich habe .permit(photos_attributes: [])
versucht, aber es einfach überspringt sie, wenn ich permit!
, uuid
, die vor dem Speichern erstellt wird, nicht in SQL angezeigt wird, und dies ist die zweite Ausgabe:
photos.uuid may not be NULL: INSERT INTO "photos" ("created_at", "model_id", "image", "title", "updated_at") VALUES (?, ?, ?, ?, ?)
Dokumentation für starke Parameter ist fehlt hier und ich bin mir nicht einmal sicher, wie es weitergeht.
aktualisieren Das funktionierte mit den verschachtelten Attributen:
params.permit(..., :photos_attributes => ['id', 'title', 'image', '_destroy'])
Aber sieht aus wie entweder Carrierwave oder Nested-Formular sollte für Rails 4 zuerst aktualisiert werden. Es wird einfach versucht, ständig ein leeres Bild zu speichern. Gleicher Code (ohne strong_params) arbeitet in Rails 3