Rails: разработайте с двумя моделями, выйдите из системы оба - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь внедрить второй ресурс пользователей в мое приложение Rails.Вход в систему работает, но в настоящее время при выходе из одного раздела выходит из системы оба.

Как настроить приложение, чтобы можно было разделить оба?

rout.rb:

devise_for :users, :path => 'users'
devise_for :admins, :path => 'admins'

application_controller.rb:

private

# Overwriting the sign_out redirect path method
def after_sign_out_path_for(resource_or_scope)
  if resource_or_scope == :user
    collection_path
  elsif resource_or_scope == :admin
    new_admin_session_path
  else
    root_path
  end
end

# Overwriting the sign_in redirect path method
def after_sign_in_path_for(resource)
stored_location_for(resource) ||
  if resource.is_a?(User)
    collection_opac_path
  elsif resource.is_a?(Admin)
    admin_root_path
  else
    super
  end
end

1.html

<%= link_to 'Log out', destroy_admin_session_path, :method => :delete %>

2.html

<%= link_to 'Log out', destroy_user_session_path, :method => :delete %>

LOG при выходе из системыпользователь:

Started DELETE "/users/sign_out" for 127.0.0.1 at Fri Feb 08 18:28:11 +0100 2019
Processing by Devise::SessionsController#destroy as HTML
  Parameters: {"authenticity_token"=>"somestring"}
  User Load (0.7ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
  Admin Load (0.4ms)  SELECT `admins`.* FROM `admins` WHERE `admins`.`id` = 1 LIMIT 1
  SQL (0.1ms)  BEGIN
   (0.4ms)  UPDATE `users` SET `updated_at` = '2019-02-08 17:28:11', `remember_created_at` = NULL WHERE `users`.`id` = 1
   (0.8ms)  COMMIT
  SQL (0.1ms)  BEGIN
   (0.2ms)  UPDATE `admins` SET `remember_created_at` = NULL, `updated_at` = '2019-02-08 17:28:11' WHERE `admins`.`id` = 1
   (0.3ms)  COMMIT
Redirected to http://localhost:3000/collection
Completed 302 Found in 10ms (ActiveRecord: 2.9ms)

1 Ответ

0 голосов
/ 09 февраля 2019

В Devise sing_out действие влияет на все активные области по умолчанию.Чтобы изменить это, установите следующее в config / initializers / devise.rb :

config.sign_out_all_scopes = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...