2010-03-17 33 views
12

Làm thế nào để tôi ghi đè/thiết authlogic sử dụng trường email thay vì lĩnh vực tên người dùng cho cả đăng ký và xác thực, có một tên người dùng + một email được thỉnh thoảng quá mãnh liệt đối với một số một số kịch bản đăng kýemail authlogic như tên người dùng

Trả lời

11

Nếu bạn chỉ cần xóa cột login và thêm một cột email, tự động sửa sẽ làm phần còn lại.

Xem ví dụ này readme cho tất cả các cột DB tùy chọn/bắt buộc.

+12

magic !. Ngoài ra tôi tìm thấy bằng cách sử dụng này cũng đã làm việc: actions_as_authentic do | c | c.login_field =: email kết thúc – ADAM

+2

Tôi cần đăng nhập bằng email nhưng bán lẻ tên người dùng. Vì vậy, tôi thích câu trả lời bình luận của ADAM. –

10

câu trả lời hay hơn, hãy thử điều này ... vâng, cập nhật đá quý authlogic nếu cần!

user_session.rb

class UserSession < Authlogic::Session::Base 
    find_by_login_method :find_by_email #for example or you can make what ever method see exapmle 2 
end 

--- dụ 2

user_session.rb

class UserSession < Authlogic::Session::Base 
    find_by_login_method :find_by_anything 
end 

user.rb

class User < ActiveRecord::Base 
    acts_as_authentic 

    def self.find_by_anything(login) 
    find_by_login(login) || find_by_email(login) || find_by_id(login) 
    end 
end 
+1

cảm ơn vì câu trả lời amrnt! – ADAM

3

Như bình luận của Adam có một câu trả lời tốt cho câu hỏi này. Thêm mô hình này vào mẫu người dùng của bạn:

class User < ActiveRecord::Base 
    acts_as_authentic do |c| c.login_field = :email end 
end 
Các vấn đề liên quan