Загрузка файлов с помощью Rails 4, Strong Parameters и Carrierwave

Я портирую приложение, которое использует Carrierwave, на Rails 4, но у меня проблемы с сильными параметрами. У меня есть модель с

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 (?, ?, ?, ?, ?)

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам