Rod*_*rek 39 ruby ruby-on-rails devise ruby-on-rails-3 strong-parameters
我想知道如何集成这两个宝石(设计+强参数),因为强的params可能会被添加到4.0中的rails core
欢迎任何帮助谢谢
ron*_*chn 53
更新设计4.x.
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end
end
Run Code Online (Sandbox Code Playgroud)
添加两个宝石后,设计将正常工作.
更新:使用最新版本的Devise 3.x,如设计#strong-parameters中所述,验证密钥(通常是电子邮件字段)和密码字段已被允许.但是,如果注册表单上有任何其他字段,则需要让Devise知道允许的额外字段.最简单的方法是使用过滤器:
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end
Run Code Online (Sandbox Code Playgroud)
对于Devise 2.x,如果您使用安全功能,要求在用户模型中明确列入污染参数:
include ActiveModel::ForbiddenAttributesProtection
Run Code Online (Sandbox Code Playgroud)
所需的更改可在https://gist.github.com/3350730上找到,它会覆盖某些控制器.
小智 8
简单的方法是在ApplicationController中添加一个简单的过滤器.如果您有不同的角色和/或其他更复杂的场景,则下面的链接还有其他选项:
https://github.com/plataformatec/devise#strong-parameters