Devise や Clearance などの認証 gem は独自の組み込みコントローラーを使用するため、それらをオーバーライドする際にいくつか質問があります。オーバーライドしようとするたびに、何かがうまくいかないようで、エラーの原因が正確にはわかりません。
たとえば、Devise で新しいユーザー コントローラーを作成するには、次のようなコントローラーを作成する必要があることを理解しています。
# 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
それは元の Devise コントローラの一部を置き換えるdef new
ものですか、それとも追加するだけですか? つまり、私も入れなければなりませんか
resource = build_resource({})
respond_with_navigational(resource){ render_with_scope :new }
Devise registrations_controller.rbの def new 部分のデフォルトの動作はどれですか?
3.) Devise には、ログインしている場合にサインアップできないようにするフィルターがありますが、これをオーバーライドする必要があります。どうすればいいですか?registrations_controller.rbprepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
の部分と関係があると思いますが、よくわかりません。
Clearance にも同じ質問が当てはまりますが、ルートとファイルが少し異なります.. (どの認証ジェムを使用するかまだ決めていないため、Clearance についても尋ねています。Clearance は、コードが軽量であるため魅力的ですが、Devise.私も必要とする追加機能があります)。