![](/img/trans.png)
[英]Formtastic::UnknownInputError in ActiveAdmin::Devise::Sessions#new
[英]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中使用多個模型( AdminUser
和User
),如果您在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.