DeviseやClearanceなどの認証用の宝石には独自のコントローラが組み込まれているため、オーバーライドするときにいくつか質問があります。私がそれを無効にしようとするたびに、何かが間違っているように見え、正確に何がエラーを引き起こしたのかわかりません。DeviseまたはClearanceコントローラのオーバーライドについて
# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
すべて良い:私は私はこのようなコントローラーを作成する必要があります理解して考案した新しいユーザーのコントローラを作成するために、例えば
、。ここでコントローラのdef new
部分に特定のものを追加したいとします。
1)単独のコントローラのdef create
一部を残すために、私は
def create
super
end
に配置する必要があり、その右か?それとも、新しいコントローラでも参照する必要がありますか?
2)は、私が
def new
#my custom code here
end
を入力した場合、それはオリジナルの工夫コントローラのdef new
一部を置き換えない、またはそれだけで、それに追加していますか?言うことを意味、私はまた、Devise registrations_controller.rbのデフ新しい一部のデフォルト動作である
resource = build_resource({})
respond_with_navigational(resource){ render_with_scope :new }
に入れなければならないのですか?
3.)Deviseには、ログインしているときにサインアップできないフィルタがありますが、これを無効にする必要があります。これはどうすればいいですか?私はそれがprepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
registrations_controller.rbの部分と関係があると推測していますが、私はあまりよく分かりません。
同じ質問がクリアランスにも適用されますが、ルートとファイルが少し異なります(まだ使用する認証宝石を決定していないため、クリアランスも求めています) - 軽量のためクリアランスが私に訴えますコードがありますが、Deviseには私が必要とする追加の機能があります)。
ありがとうございました。私はwikiのすべての言葉を読んでいるが、どこでもそれを見つけることはできないと誓っている。ちょっとフォローアップの質問:コントローラーの 'def new'部分だけを変更する必要がある場合は、' def create super'(そして 'def edit'、' def update'など)を新しいregistrations_controller.rbも同様ですか? – cdotfeli
いいえ、変更したいメソッドだけを定義できるはずです。 –