Rails 4.2 & Deviseの環境下でStrong_ParametersによるUnpermitted parametersエラー

May 26, 2015
AD:

Rails4からMass Assignment対策として、StrongParametersがRailsの中の標準ライブラリと組み込まれるようになりました。

Deviceを使ってユーザ認証を導入、独自フィールドを設置したのですが、StrongParametersでそのフィールドを許可の対象にしないとUnpermitted parametersとしてエラーがでます。
せっかく調べたので、その設定をメモしておきたいと思います。

やったこと

今回の環境
– Rails 4.2.1
– Devise 3.2.1

こういう時はドキュメントを読むのが一番ですね。しっかりStrongParametersについて書いてありますね。
http://www.rubydoc.info/github/plataformatec/devise/master/frames#Strong_Parameters

まずこの3つのアクションがあることを理解しておきます。

  • sign_in (Devise::SessionsController#create) – Permits only the authentication keys (like email)
  • sign_up (Devise::RegistrationsController#create) – Permits authentication keys plus password and password_confirmation
  • account_update (Devise::RegistrationsController#update) – Permits authentication keys plus password, password_confirmation and current_password

その後は各種アクションに対して、どのパラメータを許可するかを追加します。
ApplicationControllerに書くのもいいかもしれませんが、将来の拡張性などを考えるとモデルに対してコントローラーを作るのが汎用性が高そうです。

registrations_controllerをUsersフォルダ内に作成しました。

routes.rbに明示的にコントローラーを指定する

以上で追加したフィールドに情報を追加できるようになりました。

Related posts

AD:

No Comments, Comment or Ping

Reply to “Rails 4.2 & Deviseの環境下でStrong_ParametersによるUnpermitted parametersエラー”

ARCHIVES