Ruby on rails 3 使用用户名登录设备

Ruby on rails 3 使用用户名登录设备,ruby-on-rails-3,authentication,devise,Ruby On Rails 3,Authentication,Devise,我希望使用Desive进行身份验证,而不是将电子邮件作为登录名,我希望用户使用他们的用户名 为此 我已将用户名添加到users表中 添加到用户模型属性可访问:email、:password、:password\u confirmation、:memory\u me、:User\u name 以及“/intilizers/designe.rb”中的config.authentication\u keys=[:user\u name] 但我的问题是,如何跳过电子邮件验证,而使用用户名 我正在使用ra

我希望使用Desive进行身份验证,而不是将电子邮件作为登录名,我希望用户使用他们的用户名

为此

我已将用户名添加到users表中 添加到用户模型属性可访问:email、:password、:password\u confirmation、:memory\u me、:User\u name

以及“/intilizers/designe.rb”中的config.authentication\u keys=[:user\u name]

但我的问题是,如何跳过电子邮件验证,而使用用户名

我正在使用rails3和设备1.1.8

提前谢谢

干杯


sameera

Devise没有预见到一个根本没有电子邮件字段的选项,因此这必须在Rails级别上完成

不幸的是,Rails没有提供一种删除验证的方法,但是Rails可以被扩展,这已经在中完成了,只需看看,这是非常直接的

基本上,您将验证删除功能添加到活动记录中

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 
并扩展了designe的用户模型以消除电子邮件验证

require 'active_record_validation_extender'

module UserValidationExtender
  def self.included(base)
    base.class_eval do
      base.remove_validation(:email)
    end    
  end
end

Desive没有预见到一个根本没有电子邮件字段的选项,因此这必须在Rails级别上完成

不幸的是,Rails没有提供一种删除验证的方法,但是Rails可以被扩展,这已经在中完成了,只需看看,这是非常直接的

基本上,您将验证删除功能添加到活动记录中

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 
并扩展了designe的用户模型以消除电子邮件验证

require 'active_record_validation_extender'

module UserValidationExtender
  def self.included(base)
    base.class_eval do
      base.remove_validation(:email)
    end    
  end
end

在最新的Desive版本中,您可以根据需要添加电子邮件?方法创建用户模型。 它关闭可验证模块中的电子邮件验证

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

  def email_required?
    false
  end
end
class用户
在最新的Desive版本中,您是否可以根据需要添加电子邮件?方法创建用户模型。 它关闭可验证模块中的电子邮件验证

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

  def email_required?
    false
  end
end
class用户
Deviate提供了如何设置的说明

如果你想用用户名(或其他什么)代替电子邮件,看看这个。(请记住,您仍然需要在注册页面发送电子邮件)

如果你想使用电子邮件或用户名,看看这个


Deave提供了如何设置的说明

如果你想用用户名(或其他什么)代替电子邮件,看看这个。(请记住,您仍然需要在注册页面发送电子邮件)

如果你想使用电子邮件或用户名,看看这个


嗨,瓦尔迪斯,尽管我没有试过你的例子,但你的概念真的很酷。感谢lotHi Valdis,尽管我没有尝试过你的例子,但你的概念真的很酷。谢谢