RailsとDeviseを使った強力なパラメータ 質問する

RailsとDeviseを使った強力なパラメータ 質問する

私は、Ruby 2.0.0p0 および Rails 4.0.0.beta1 とともに、devise の Rails 4.0 ブランチを使用しています。

これは、私が正しい方法でやっているかどうか、あるいは他にやるべきことがあるかどうかを確認している種類の質問です。Rails 4.0 に移行している多くの人が同じ問題に直面していると思います (同様のことを Google で検索した後)。

私は以下のリンクを読みました:

ここで、devise を使用して User モデルを作成し、上記の gist を使用して次のコントローラーを作成しました (ルート ファイルに必ず含めました)。追加のパラメーターは first_name と last_name です。

class Users::RegistrationsController < Devise::RegistrationsController
  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
  private :sign_up_params
  private :account_update_params
end

他に何かすべきことはありますか? これは、今後 (attr_accessor を削除して以来) の最善の方法でしょうか。フォームは正常に動作しているようです (新規および更新の両方)。gist では「resource_params」を使用するように言われていますが、サーバー ログには常に「許可されていないパラメーター」エラーが表示されています。

ベストアンサー1

Devise の Rails4 ブランチの最新の更新に感謝します。実際には 'resource_params' を挿入する必要はありません。

私は新しい Rails4 アプリを作成し、基本的な Devise インストール手順に従いました。アプリは正常に動作したので、うまくいったと思います。

ただし、必要に応じて、許可されたパラメータに関する追加の詳細を提供する修正された gist があります。

ソース:https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

# controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  protected

  # my custom fields are :name, :heard_how
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:name, :heard_how,
        :email, :password, :password_confirmation)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
      u.permit(:name,
        :email, :password, :password_confirmation, :current_password)
    end
  end
end

おすすめ記事