2

Rails 4 にアップグレードし、strong_parameters ルートに進みました。問題は、Devise で使用している顧客登録コントローラーを指す次のエラーをスローしていることです。

ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError):
  app/controllers/users/registrations_controller.rb:89:in `build_resource'
  app/controllers/users/registrations_controller.rb:6:in `create'

6 行目はメソッドbuild_resourceから呼び出されておりcreate、build_resource はストック スタンダードです。

def build_resource(hash=nil)
  hash ||= resource_params || {}
  self.resource = resource_class.new_with_session(hash, session)
end

扱っているモデルは ですUser。許可されたパラメーター クラスを作成する Ryan Bates のアプローチを試しました。

class PermittedParams < Struct.new(:params, :current_user)

    def user
      params.require(:user).permit(*user_attributes)
    end

    def user_attributes
      [:name, :username, :provider, :email, :remember_me,
       :rememberable_token, :password, :password_confirmation]
    end

登録コントローラーでこれを処理する方法がわかりません。

4

2 に答える 2

3

Devise は、Rails 4 と互換性のある新しい rc gem をリリースしました。

gem 'devise', '~> 3.0.0.rc'

他のオプションとして、devise master github repo の「rails4」ブランチを使用できます。

gem 'devise', github: 'plataformatec/devise', branch: 'rails4'

そしてもちろん、Gemfile の更新後に「バンドルのインストール」を忘れないでください。

于 2013-05-16T14:38:46.460 に答える