Мое приложение использует Rails 3.0.4 и Devise 1.1.7.
Я ищу способ предотвратить использование пользователями учетных записей, поскольку приложение является услугой, основанной на подписке. Я искал более недели, и я до сих пор не знаю, как реализовать решение. Я надеюсь, что кто-то выполнит решение и может указать мне в правильном направлении.
Решение (Спасибо всем за ваши ответы и понимание!)
В приложении controller.rb
before_filter :check_concurrent_session
def check_concurrent_session
if is_already_logged_in?
sign_out_and_redirect(current_user)
end
end
def is_already_logged_in?
current_user && !(session[:token] == current_user.login_token)
end
В session_controller, который переопределяет контроллер Devise Sessions:
skip_before_filter :check_concurrent_session
def create
super
set_login_token
end
private
def set_login_token
token = Devise.friendly_token
session[:token] = token
current_user.login_token = token
current_user.save
end
В миграции AddLoginTokenToUsers
def self.up
change_table "users" do |t|
t.string "login_token"
end
end
def self.down
change_table "users" do |t|
t.remove "login_token"
end
end