Sie sollten sicherstellen, dass Sie die
umfassen
attr_accessor :login
im Benutzermodell. Hier ist die Frage, die erklärt, dass attr_accessible veraltet ist.
Rails 4 + Devise Login with email or username and strong parameters
Difference between attr_accessor and attr_accessible
Dies ist, was meine app/models/user.rb Datei aussieht.
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessor :login
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
if login = conditions.delete(:login)
where(conditions).where(["username = :value OR lower(email) = lower(:value)", { :value => login }]).first
else
where(conditions).first
end
end
validates :username,
:uniqueness => {
:case_sensitive => false
}
end
nur ein bisschen zu erweitern, würde Ich mag an finde eine Lösung, die ich verwenden könnte, die nicht die Wiederverwendung des 'protected_attributes'-Edelsteins beinhaltete. Wenn das in diesem Fall möglich ist. –