2

私は次のデバイスモデルを持っています(簡潔にするために編集されています)

class Student < ActiveRecord::Base

  devise :database_authenticatable, :token_authenticatable,
         :recoverable, :rememberable, :trackable,
         :authentication_keys => [:login], :reset_password_keys => [ :login ]

  attr_accessor :login
  attr_accessible :name, :email, :password, :password_confirmation, :login

  validates :name, :presence => true
  validates :email, :presence => true
  validates_uniqueness_of    :email,     :case_sensitive => false, :allow_blank => true, :if => :email_changed?, :scope => :id
  validates_format_of :email, :with  => Devise.email_regexp, :allow_blank => true, :if => :email_changed?
  validates_presence_of   :password, :on=>:create
  validates_confirmation_of   :password, :on=>:create
  validates_length_of :password, :within => Devise.password_length, :allow_blank => true

  def self.find_first_by_auth_conditions(warden_conditions)
    conditions = warden_conditions.dup
    if login = conditions.delete(:login)
      where(conditions).where(["name = :value OR lower(email) = :value", { :value => login.downcase }]).first
    else
      where(conditions).first
    end
  end

  def email_required?
    false
  end

  def email_changed?
    false
  end

end

そして、このリンクのガイドに従って、名前または電子メールでのサインインを有効にしました。

問題は次のとおりです。

名前が 2 語を超える生徒はサインインできません。たとえば、「Adam Bravo Charlie」などです。

「Adam」などの単一の名前、または「Adam Bravo」などの 2 語以下の名前でサインインできます。

学校では、学生がフルネームとそれに付随するスペースを使用してログインする必要があります。生徒が氏名と空白文字でサインインできるようにするにはどうすればよいですか?

4

2 に答える 2

3

解決策は私が思っていたよりも簡単であることがわかりました。

config/initializers/devise.rb

config.case_insensitive_keys = [ :name]
config.strip_whitespace_keys = [ :name ]

ほら、フルネームでログインできるようになりました!

于 2013-10-10T07:29:19.137 に答える