используя имя пользователя для входа в devise - PullRequest
1 голос
/ 17 марта 2011

Я хочу использовать devise для своей аутентификации, и вместо того, чтобы в качестве логина использовать электронную почту, я хочу, чтобы пользователи использовали свои имена пользователей

для этого

Я добавил user_name для пользователейтаблица добавлена ​​в пользовательскую модель1008 * Но у меня вопрос: как я могу пропустить проверку электронной почты и получить вместо него имя пользователя

Я использую rails3 и устройство 1.1.8

заранее спасибо

ура

Самера

Ответы [ 3 ]

17 голосов
/ 06 мая 2012

В последних версиях Devise вы можете просто добавить email_required?метод вашей модели пользователя.Отключает проверку электронной почты в проверяемом модуле.

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  def email_required?
    false
  end
end
3 голосов
/ 17 марта 2011

Devise не предусмотрел возможность вообще не иметь поля электронной почты, поэтому это должно быть сделано на уровне Rails.

К сожалению, Rails не предлагает способ удаления проверок, однако rails могут бытьрасширен, и это уже было сделано в этом плагине , просто взгляните на расширение active_record , оно довольно простое.

По сути, вы добавляете функции удаления проверкик active_record

module ActiveRecord
  class Base
    def self.clear_validations
      @validate_callbacks = []
    end  
    def self.remove_validation(sym)
     @validate_callbacks.reject! {|validation| validation.options[:name] == sym}
    end
    def self.remove_validation_group(sym)
     @validate_callbacks.reject! {|validation| validation.options[:group] == sym}
    end
  end
end 

и расширить пользовательскую модель devise для удаления проверки электронной почты

require 'active_record_validation_extender'

module UserValidationExtender
  def self.included(base)
    base.class_eval do
      base.remove_validation(:email)
    end    
  end
end
0 голосов
/ 05 июня 2013

Devise предоставил инструкции о том, как это настроить.

Если вы хотите использовать имена пользователей (или любые другие) вместо электронных писем, взгляните на это.(только помните, вам все равно потребуется электронное письмо на странице регистрации) https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-with-something-other-than-their-email-address

Если вы хотите использовать электронную почту или имя пользователя, взгляните на это.

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...