Хорошо, я так и сделал.Отредактировал config.authentication_keys в devise.rb как
config.authentication_keys = [ :login, :account_id ]
Также я создал скрытое поле для включения account_id в форму входа
<%= f.hidden_field :account_id, :value => @account.id %>
Здесь @account содержит учетную запись, связанную с текущим поддоменом.
И добавил следующий защищенный метод в user.rb, чтобы переопределить метод класса find_for_database_authentication
protected
def self.find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
login = conditions.delete(:login)
account_id = conditions.delete(:account_id)
where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).where("account_id = ?", account_id).first
end
Если есть лучшее решение, не стесняйтесь комментировать, ребята ..Ура!