Active Admin名称空间配置冲突

时间:2018-08-31 21:33:23

标签: ruby-on-rails ruby activeadmin

我正在与客户现有的活动admin安装配合使用,并尝试使用名称空间添加其他用户组。我已经关注了这篇文章:

https://stackoverflow.com/questions/19399030/handling-more-than-one-admin-types-login-with-activeadmin#=

很不幸,我的行为有些奇怪。如果我去管理员,则可以按预期使用原始管理员帐户之一登录,但是状态栏中缺少我的注销按钮和电子邮件。如果我强制注销并转到/ users,那么即使我刚刚注销,也可以直接转到其仪表板。如果我注销他们的帐户或转到/ user / login,则可以重新登录到用户仪表板,但仅使用我的管理员帐户,它将不使用users表,最奇怪的是,该表在我的用户名中和注销按钮又回来了,但是它显示了从用户数据库中登录的最后一个用户,而不是刚刚登录的admin用户(我以前使用过用户视图,并且似乎正在记住该用户)。最后,由于我正在获取“未定义的方法'superadmin?',我的current_user对象似乎为零。 for nil:NilClass”,当我测试创建的自定义属性时。

似乎这些config变量不是由不同的名称空间统一设置的,它们在某种程度上相互叠加。任何帮助将不胜感激。...

这是我的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

请让我知道我可以提供的其他信息。

0 个答案:

没有答案