【发布时间】:2013-12-20 06:59:35
【问题描述】:
我正在尝试为 Rails 4 上的设计用户模型传递一个附加参数。因为它需要被允许,所以我在我的主应用程序控制器中添加了一个过滤器,如下所示。
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
prepend_before_filter :add_allowed_devise_session_params, if: :devise_controller?
def add_allowed_devise_session_params
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit("avatar") }
end
end
但在提交 :sign_up 时,我仍然收到错误消息:
Unpermitted parameters: avatar
参数如下:
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"vp1ir2TJwZXwYGFtDc97bSf/dnXQQl1pksHVxdVTaWc=", "user"=>{"name"=>"stan@merkwelt5.com", "email"=>"stan@merkwelt5.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "avatar"=>#<ActionDispatch::Http::UploadedFile:0x007fa05762a918 @tempfile=#<File:/var/folders/8y/g14_rdxx31gb35dyjhltk4xc0000gn/T/RackMultipart20131219-7366-vf7of8>, @original_filename="instagram_logo.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"instagram_logo.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Sign up"}
我验证了过滤器实际上是在 :sign_up 上调用的,并且根据设计文档:
https://github.com/plataformatec/devise#strong-parameters
我错过了什么?
【问题讨论】:
标签: ruby-on-rails devise ruby-on-rails-4