2013-04-20 75 views
5

我在Rails 3.2中使用了strong_parameters gem。要測試圖片上傳過程,我有一個帶有參數的傳入帖子請求:如何允許帶有強參數的Rack :: Test :: UploadedFile?

{"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

上測試過您找到解決方案嗎?阻止了這個, – 2013-09-27 08:05:38

回答

1

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

PERMITTED_SCALAR_TYPES = [字符串,符號,NilClass,數字, TrueClass,FalseClass,日期,時間,StringIO的,IO, ActionDispatch :: HTTP :: UploadedFile的,機架::測試:: UploadedFile的]

所以你只需要允許它作爲一個標量類型:

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

剛剛在Rails 4.1.1

+0

似乎Rails 4.1.1修正了這個問題。 – 2014-06-08 16:46:23

+0

這是固定在一年前在'4.0.0' https://github.com/rails/rails/pull/9357 – freemanoid 2014-06-09 10:41:42

+0

我最近重新審查了這個問題,所以我不知道它什麼時候修復了。我想當我遇到這個問題時,Rails 4.0還是新的。 – 2014-06-10 09:02:18