4.0 で強力なパラメーターが Rails コアに追加される可能性が高いため、この宝石 (デバイス + 強力なパラメーター) の両方を統合する方法を知りたいです。
どんな助けでも大歓迎ですありがとう
4.0 で強力なパラメーターが Rails コアに追加される可能性が高いため、この宝石 (デバイス + 強力なパラメーター) の両方を統合する方法を知りたいです。
どんな助けでも大歓迎ですありがとう
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
両方の宝石を追加した後、deviseは通常どおり機能します。
更新:devise #strong-parametersで説明されているように、最新バージョンのDevise 3.xでは、認証キー(通常は電子メールフィールド)、およびパスワードフィールドがすでに許可されています。ただし、サインアップフォームに追加のフィールドがある場合は、許可する追加のフィールドを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
Devise 2.xの場合、ユーザーモデルで汚染されたパラメーターを明示的にホワイトリストに登録する必要がある安全機能を使用する場合:
include ActiveModel::ForbiddenAttributesProtection
必要な変更はhttps://gist.github.com/3350730にあり、一部のコントローラーをオーバーライドします。
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