2017-02-20 64 views
3

我想不要求電子郵件只簽署手機號碼註冊用戶和使用設計寶石登錄。我從config/initializers/devise.rb刪除了電子郵件:刪除devise gem中的電子郵件字段?

+0

你檢查https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-使用他們的用戶名或電子郵件地址,你可以使用'手機號碼'而不是'用戶名' –

回答

3

這是devise的validate.rb文件的link。你可以看到一個email_required方法嗎?在模型中。所以我猜

def email_required? 
    false 
end 

你需要把上面的方法放在你的model.rb文件中。

您還需要對用戶表進行一些修改。默認情況下,Devise不允許電子郵件字段爲空。創建並運行更改遷移,允許電子郵件爲空

# in console 
rails g migration AddChangeColumnNullToUserEmail 

# migration file 
class AddChangeColumnNullToUserEmail < ActiveRecord::Migration 
    def self.up 
    change_column :users, :email, :string, :null => true 
    end 

    def self.down 
    change_column :users, :email, :string, :null => false 
    end 
end 
3

您可以使用this指南,但使用mobile而不是username。例如

在devise.rb:

config.authentication_keys = [:mobile] 

在你的控制器:

.permit(:mobile) 

更改電子郵件字段到移動領域app/views/devise/sessions/new.html.erbapp/views/devise/registrations/new.html.erb

在devise.en.yml:

invalid: 'Invalid mobile number or password.' 
not_found_in_database: 'Invalid mobile number or password.' 
0

ü必須更改config.authentication_keys = [ :phone_number ]它取決於如何將其保存在您的數據庫中,並在形式上將f.email_field更改爲f.text_field應該是。

+0

沒有這是錯的 –