Конфликты конфигурации пространства имен Active Admin - PullRequest
0 голосов
/ 01 сентября 2018

Я работаю со своими клиентами, имеющими активную установку администратора, и пытаюсь добавить дополнительную группу пользователей, используя пространства имен. Я подписался на этот пост:

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

Пожалуйста, дайте мне знать любую другую информацию, которую я могу предоставить.

...