5

私が書いているアプリでは、単純な手作りの認証を使用しています(Railscast.comで説明されています)。Ryan BatesのNiftyGeneratorsgemのコードを使用して、認証に役立ついくつかのメソッドを備えた認証モデルがあります。このモジュールはに含まれていapplication_controller.rbます。

私が使用したいメソッドの1つはと呼ばれredirect_to_target_or_defaultます。これが、認証後にユーザーが表示されていたページにユーザーをリダイレクトするために必要なものであることはわかっていますが、このメソッドをどこで呼び出すべきかわかりませんか?この方法の使い方を教えていただければ幸いです。

ControllerAuthenticaionモジュールコード

module ControllerAuthentication
  # Makes these methods helper methods in the controller that includes this module.
  def self.included(controller)
    controller.send :helper_method,
      :current_admin, :logged_in?,
      :redirect_to_target_or_default
  end 

  def current_admin
    @current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id]
  end

  def logged_in?
    current_admin
  end

  def login_required
    unless logged_in?
      store_target_location
      redirect_to login_url,
        :alert => "You must first log in before accessing this page."
    end
  end 
  def redirect_to_target_or_default(default, *args)
    redirect_to(session[:return_to] || default, *args)
    session[:return_to] = nil
  end 
  def redirect_to_or_default(target, *args)
    redirect_to(target || default, *args)
  end 
  def store_target_location
    session[:return_to] = request.url
  end
end
4

1 に答える 1

3

Ryan の gem 内でジェネレーターを実行しましたか? このメソッドも含まれる SessionController (リンクを参照) が生成されているはずです。

def create
  @session = Session.new(params[:session])
  if @session.save
    flash[:notice] = "Logged in successfully."
    redirect_to_target_or_default(root_url)
  else
    render :action => 'new'
  end
end

このコードを読めば、使い方のアイデアが得られると思います。:)

于 2012-05-22T07:27:43.350 に答える