【问题标题】:undefined method `username' for #<AdminUser:0x00000004bb2e58>#<AdminUser:0x00000004bb2e58> 的未定义方法“用户名”
【发布时间】:2012-11-06 15:54:27
【问题描述】:

我首先安装了 devise 并对其进行了更改,因此我可以使用用户名而不是电子邮件登录。 之后,我将 Activeadmin gem 输入到我的 gem 文件中。

之后,我进行了捆绑安装和 rake 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他们成功了

【问题讨论】:

标签: devise activeadmin


【解决方案1】:

我遇到了同样的错误,我将它添加到我的 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

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多