DeviseLdapAuthenticatable:无法使用用户名或电子邮件登录(无此类列users.login错误)

时间:2019-07-16 07:45:48

标签: ruby-on-rails devise

我已经设计出一个新的应用程序并设计了可验证的ldap。然后,我按照他们的Wiki操作方法使用电子邮件或用户名登录。现在,我收到“ SQLException:无此类列:users.login”错误。

我已经尝试了在stackoverflow上可以找到的所有东西,但是没有任何效果。

application_controller:

ViewController

user.rb

  before_action :configure_permitted_parameters, if: :devise_controller?

  def configure_permitted_parameters
   devise_parameter_sanitizer.permit(:sign_in, keys: [:login, :password])
  end

devise.rb

  attr_accessor :login

  def self.find_for_database_authentication(warden_conditions) 
    conditions = warden_conditions.dup
    login = conditions.delete(:login)
    where(conditions).where(["lower(username) = :value OR lower(userPrincipalName) = :value", {value: login.strip.downcase}]).first
  end

我希望我的用户使用他们的电子邮件(在我的情况下是userPrincipalName)或用户名登录。但是,当我尝试登录时,唯一得到的就是这个无列错误。

1 个答案:

答案 0 :(得分:0)

此异常意味着,login表的架构中没有users列。 Devise仅生成一个“电子邮件”字段,默认情况下用作登录。

您可以通过以下方式轻松添加

rails g migration AddLoginToUsers login:string:index
rails db:migrate

然后您可以删除attr_accessor :login部分,因为login字段将自动可用。