バックグラウンド
Devise::RegistrationsController
という名前のクラスを使用して、ユーザー登録を自分で処理するためにサブクラス化しましDeviseUsersController
た。
アクションをオーバーライドする必要があります。create
以前に使用super
して、実行する必要のある追加のことを実行しましたが、これでは要件が満たされなくなりました。
そこで、github でデバイス コードをチェックアウトし、いくつかの調整を加えて再作成しようとしました。しかし、最初の行から問題が発生しました...
コード
class DeviseUsersController < Devise::RegistrationsController
...
def build_resource
super
end
def sign_up_params
super
end
def create
build_resource(sign_up_params)
...
end
end
エラー
super: no superclass method `sign_up_params' for #<DeviseUsersController:0x007f8f2d09a538>
質問
なぜこのエラーが発生するのですか? Devise::RegistrationsController コードに基づいて、プライベートではないメソッドが存在することは明らかです。
バージョン:
- レール 3.2.13
- ルビー1.9.3
- 考案 2.2.3
編集 コードを次のように変更します。
class DeviseUsersController < Devise::RegistrationsController
...
def create
build_resource(sign_up_params)
...
end
protected
def build_resource
super
end
def sign_up_params
super
end
end
まだ動作しません。