如何允许具有强参数的Rack :: Test :: UploadedFile?

时间:2013-04-20 12:30:08

标签: ruby-on-rails-3.2 strong-parameters

我在Rails 3.2中使用了strong_parameters gem。为了测试图像上传过程,我有一个带参数的传入请求:

{"photo"=>{"image"=>#<Rack::Test::UploadedFile:0x000000069ce1f8 @content_type="image/png", @original_filename="test.png", @tempfile=#<Tempfile:/tmp/test.png20130420-9529-1xuka4v-1>>, "status"=>"approved", "in_use"=>false}, "controller"=>"member/photos", "action"=>"create"}

如何允许图像属性进行分配?我试过了;

params.require(:photo).permit(:image)

但它不起作用并说Validation failed: Image can't be blank

当我允许params.require(:photo).permit!的所有参数时,它可以正常工作。

1 个答案:

答案 0 :(得分:1)

来自http://api.rubyonrails.org/classes/ActionController/Parameters.html

  

PERMITTED_SCALAR_TYPES = [String,Symbol,NilClass,Numeric,   TrueClass,FalseClass,Date,Time,StringIO,IO,   ActionDispatch :: Http :: UploadedFile, Rack :: Test :: UploadedFile ]

所以你只需要允许它作为标量类型:

params.require(:photo).permit(:image)

刚刚在Rails 4.1.1

上测试过