Я работаю со своими клиентами, имеющими активную установку администратора, и пытаюсь добавить дополнительную группу пользователей, используя пространства имен. Я подписался на этот пост:
https://stackoverflow.com/questions/19399030/handling-more-than-one-admin-types-login-with-activeadmin#=
У меня, к сожалению, странное поведение. Если я захожу к администратору, я могу войти в систему с одной из исходных учетных записей администратора, как и ожидалось, но моя кнопка выхода из системы и мой адрес электронной почты отсутствуют в строке состояния. Если я форсирую выход из системы и захожу в / users, тогда я могу перейти прямо к его панели, даже если я только что вышел из системы. Если я выйду из них или зайду в / user / login, то смогу снова войти в панель пользователя, но только с моими учетными записями администратора, она не будет использовать таблицу пользователей, и самое странное, что в этой панели мое имя пользователя и кнопка «Выйти» вернулись, но она показывает последнего пользователя из базы данных пользователей, который вошел в систему, а не пользователя администратора, который только что вошел в систему (ранее у меня работало представление пользователя, и, похоже, он запомнил этого пользователя). Наконец, похоже, что мой объект current_user равен nil, поскольку я получаю "неопределенный метод" superadmin? " для nil: NilClass ", когда я тестирую пользовательский атрибут, который я создал.
Кажется, что эти переменные конфигурации не устанавливаются одинаково различными пространствами имен, и они работают несколько поверх друг друга. Любая помощь будет высоко ценится ....
Вот мой active_admin.rb:
ActiveAdmin.setup do |config|
#config.current_user_method = :current_user
# config.logout_link_path = :destroy_user_session_path
config.batch_actions = true
config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/users', Rails.root),]
#config.default_namespace = :admin
config.namespace :admin do |admin|
admin.site_title = "Checkin Admin"
admin.authentication_method = :authenticate_admin_user!
admin.logout_link_path = :destroy_user_session_path
admin.current_user_method = :current_user
end
config.namespace :users do |users|
# c.authentication_method = :logged_in?
users.site_title = "Checkins"
users.current_user_method = :current_user
users.logout_link_path = :destroy_user_session_path
end
end
Вот мои маршруты:
CheckinAdmin::Application.routes.draw do
devise_for :users, ActiveAdmin::Devise.config.merge({path: '/users'})
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
Вот схема моего пользователя, она идентична admin_user:
# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.inet :current_sign_in_ip
t.inet :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
Пожалуйста, дайте мне знать любую другую информацию, которую я могу предоставить.