È necessario assicurarsi di includere il
attr_accessor :login
nel modello utente. Qui è dove ho trovato la domanda che spiega che attr_accessible è deprecato.
Rails 4 + Devise Login with email or username and strong parameters
Difference between attr_accessor and attr_accessible
Questo è ciò che il mio app// file di modelli user.rb assomiglia.
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
Tanto per espandere un po ', mi piacerebbe trovare una soluzione che potrei usare che non implicasse il riutilizzo della gemma 'protected_attributes'. Se è possibile in questo caso. –