使用Rails 4,强参数和Carrierwave上传文件

fir*_*dev 5 file-upload nested-forms carrierwave strong-parameters ruby-on-rails-4

我正在移植一个使用Carrierwave到Rails 4的应用程序,但我遇到了强大的params问题.我有一个模特

accepts_nested_attributes_for :photos
Run Code Online (Sandbox Code Playgroud)

以下是上传图片的传递方式:

{
    # ...
    "model"=>
    {
        # ...
        "photos_attributes"=>
        {
            "1362752177921"=>
            {
                "image"=>"test.jpg",
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法弄清楚如何编写将接受的参数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 (?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

这里缺乏强参数的文档,我甚至不确定如何继续.

更新 这适用于嵌套属性:

params.permit( ..., :photos_attributes => ['id', 'title', 'image', '_destroy'])
Run Code Online (Sandbox Code Playgroud)

但是看起来像Carrierwave或Nested Form应该先为Rails 4更新.它只是试图一直保存一个空图像.相同的代码(没有strong_params)在Rails 3中有效.

fir*_*dev 1

这适用于嵌套属性:

params.permit( ..., :photos_attributes => ['id', 'title', 'image', '_destroy'])
Run Code Online (Sandbox Code Playgroud)

但看起来应该首先针对 Rails 4 更新 Carrierwave 或 Nested Form。它只是试图一直保存一个空图像,我用它消除了它:reject_if,但它仍然不是 100 个工作。