簡體   English   中英

以管理員身份登錄時,ActiveAdmin :: Devise :: Sessions#new中的NoMethodError

[英]NoMethodError in ActiveAdmin::Devise::Sessions#new when logging in as Admin

我將ActvieAdmin用於我的應用程序的后端。

我進行了以下更改,以允許我的用戶使用其username注冊其帳戶。

config/initializers/devise.rb我更改了config.authentication_keys = [:username]

然后我將以下幾行添加到user.rb模型中

validates :email,uniqueness: true 
validates :username,uniqueness: true

然后我創建了一個遷移rails generate migration add_username_to_users username:string:uniq ,然后rake db:migrate

然后最后我修改了devise視圖以顯示:username

我現在可以以具有用戶名的用戶身份登錄

但是我無法再登錄ActiveAdmin。 我收到此錯誤消息

NoMethodError in ActiveAdmin::Devise::Sessions#new

Showing /Users/dadi/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activeadmin-1.2.1/app/views/active_admin/devise/sessions/new.html.erb where line #8 raised:

undefined method `username' for #<AdminUser id: nil, email: "", created_at: nil, updated_at: nil>

我不確定如何使ActiveAdmin log_in再次工作。 誰能幫我這個?

假設您在Devise中使用多個模型( AdminUserUser ),如果您在devise初始化器配置中更改了authentication_keys ,它將對兩個模型強加規則。 由於AdminUser顯然缺少username屬性,因此該方法對您不起作用。

如果要使用電子郵件admin_users用戶名username進行身份驗證,則需要在各個模型中添加authentication_keys以及其他devise選項,而不是像這樣的初始化程序

# AdminUser
class AdminUser < ApplicationRecord
  ...
  devise :database_authenticatable,..., authentication_keys: [:email]
  ...
end

# User
class User < ApplicationRecord
  ...
  devise :database_authenticatable,..., authentication_keys: [:username]
  ...
end

如果您想同時允許兩種類型的用戶使用電子郵件/用戶名 ,則可以單擊此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM