2012-02-06 32 views
15

Tôi muốn KHÔNG yêu cầu email để đăng nhập bằng cách sử dụng. Tôi đã gỡ bỏ email từ config/initializers/devise.rb:đưa ra: không yêu cầu email

config.authentication_keys = [ :login ] 

và bổ sung này để mô hình người dùng của tôi:

def email_required? 
    false 
end 

Tuy nhiên, tôi nhận được lỗi này khi tôi cố gắng tiết kiệm cho người sử dụng:

SQLite3::SQLException: users.email may not be NULL 

Tôi có giả định thay đổi điều gì đó trong quá trình di chuyển không?

Trả lời

16

Dường như bạn có trường email được đặt trong cơ sở dữ liệu là "không NULL" hoặc "Cho phép Null" thành sai. Và bạn đang gặp lỗi trực tiếp từ cơ sở dữ liệu. Giả sử rằng mô hình sử dụng của bạn được gọi là người dùng mà bạn cần thêm sự di cư fallowing để khắc phục điều đó:

change_column :users, :email, :string, :null => true 

Tài liệu: http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

9

bổ sung để loại bỏ "yêu cầu" từ: Cột email mà bạn cần phải loại bỏ " : validatable "từ mô hình người dùng.

26

Một số tài liệu tham khảo cho biết bạn không nên xóa :validatable, vì nó sẽ xóa xác thực mật khẩu.

Trong trường hợp của tôi, tôi đã xóa cột email từ số người dùng trong cơ sở dữ liệu của mình và bắt đầu bị lỗi. Tôi bao gồm:

def email_required? 
    false 
end 

def email_changed? 
    false 
end 

trong User.rb và hoạt động bình thường.

+4

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Validatable –

+0

Điều này rất quan trọng –

Các vấn đề liên quan