Я использую Devise в Rails 3. Я использовал before_filter :authenticate_user!
для перенаправления для входа, если пользователь, не вошедший в систему, нажимает на ссылку.Это работает, но после входа в систему он перенаправляет обратно на домашнюю страницу.Вместо этого я хочу перенаправить на ссылку, которую пользователь щелкнул перед перенаправлением на страницу входаЭто мой код:
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :authenticate_user!
layout :layout_by_resource
def after_sign_in_path_for(resource_or_scope)
if resource_or_scope.is_a?(User)
if current_user.admin?
admin_event_types_path
else
home_path
end
else
super
end
end
..
..
end
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:token_authenticatable
..
..
end
Обновление
Я пробовал это, используя ответ от @dreamfall, но он не перенаправляет, как ожидалось.
def after_sign_in_path_for(resource_or_scope)
if resource_or_scope.is_a?(User)
if current_user.admin?
stored_location_for(resource_or_scope) ? stored_location_for(resource_or_scope) : admin_event_types_path
else
stored_location_for(resource_or_scope) ? stored_location_for(resource_or_scope) : home_path
end
else
super
end
end
Есть ли какая-либо встроенная конфигурация для этого в Devise?Если нет, как мне это сделать и где я должен изменить код?