devise和强大的参数
我想知道如何整合这两个gem(devise+强大的参数),因为强有力的参数可能会被添加到轨道核心在4.0
欢迎任何帮助,谢谢
更新devise4.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
添加这两个gem后,devise将正常工作。
更新:使用最新版本的Devise 3.x,如devise#strong-parameters所述,validation密钥(通常是电子邮件字段)和密码字段已被允许。 但是,如果registry单上还有其他字段,则需要让Devise知道允许的额外字段。 最简单的方法是使用filter:
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
对于Devise 2.x,如果您使用安全function,需要在用户模型中明确列出受污染的参数:
include ActiveModel::ForbiddenAttributesProtection
简单的方法是在ApplicationController中添加一个简单的filter。 如果您有不同的angular色和/或其他更复杂的情况,则以下链接上还有其他选项:
before_filter :configure_sanitized_params, if: :devise_controller? def configure_sanitized_params devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:firstname, :designation_id ,:middlename, :previous_experiance_year,:previous_experiance_month,:lastname, :email, :username, :password, :password_confirmation, :previous_experiance,:empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone,:deactivated_date,:image)} devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:remove_image,:firstname, :designation_id ,:middlename, :lastname, :email, :username, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date,:image)} end
将此代码复制并粘贴到您的应用程序控制器,而不是:firstname和其他字段,您必须添加您的字段。