我首先安装了设计并对其进行了更改,因此我可以使用用户名而不是电子邮件登录。 之后我将Activeadmin gem输入我的gem文件。
之后我做了一个bundle install并调用了active_admin:install。 但在尝试登录后端/ admin / login后,我看到了以下错误消息:
undefined method `username' for #<AdminUser:0x00000004bb2e58>
关于此代码:
提取的来源(第7行):
4: <% scope = Devise::Mapping.find_scope!(resource_name) %>
5: <%= active_admin_form_for(resource, :as => resource_name, :url => send(:"#{scope}_session_path"), :html => { :id => "session_new" }) do |f|
6: f.inputs do
7: resource.class.authentication_keys.each { |key| f.input key, :input_html => {:autofocus => true}}
8: f.input :password
9: f.input :remember_me, :label => t('active_admin.devise.login.remember_me'), :as => :boolean, :if => false #devise_mapping.rememberable? }
10: end
任何人都知道如何解决这个问题? 如果您需要更多信息,请询问。
鲁洛夫
编辑:我认为我可以通过这样做来解决这个问题:http://blog.blazingcloud.net/2012/07/29/activeadmin-with-existing-devise-authentication/ 但是现在所有登录都失败了(401),他们没有activeadmin他们是成功的
答案 0 :(得分:0)
我遇到了同样的错误,我解决了这个问题,将其添加到我的AdminUser模型
def login=(login)
@login = login
end
def login
@login || self.email
end
def self.find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
login = conditions.delete(:login)
where(conditions).where(["lower(email) = :value", { :value => login.strip.downcase }]).first
end