5

Я переношу приложение, которое использует Carrierwave для Rails 4, но у меня проблемы с сильными параметрами. У меня есть модель сЗагрузка файла с помощью Rails 4, Strong Parameters и Carrierwave

accepts_nested_attributes_for :photos 

Вот как передаются закачанные изображения:

{ 
    # ... 
    "model"=> 
    { 
     # ... 
     "photos_attributes"=> 
     { 
      "1362752177921"=> 
      { 
       "image"=>"test.jpg", 
      } 
     } 
    } 
} 

Однако я не могу показаться, чтобы выяснить, как писать параметры, которые будут принимать photos_attributes.

Я попытался .permit(photos_attributes: []), но он просто пропускает их, когда я использую permit!, uuid, что создается до экономии не появляется в SQL, и это второй вопрос:

photos.uuid may not be NULL: INSERT INTO "photos" ("created_at", "model_id", "image", "title", "updated_at") VALUES (?, ?, ?, ?, ?) 

Документация для сильных параметров здесь нет, и я даже не уверен, как действовать дальше.

Update Это работает с вложенными атрибутами:

params.permit(..., :photos_attributes => ['id', 'title', 'image', '_destroy']) 

Но выглядит как Carrierwave или вложенной формы должны быть обновлены для Rails 4 первых. Он просто пытается сохранить пустой образ все время. Тот же код (без strong_params) работает в Rails 3.

ответ

1

Это работает с вложенными атрибутами:

params.permit(..., :photos_attributes => ['id', 'title', 'image', '_destroy']) 

Но выглядит либо Carrierwave или вложенной формы должны быть обновлены для Rails 4 первых. Он просто пытается сохранить пустой образ все время, которое я отменил с :reject_if, но все же он не работает 100.

Смежные вопросы