2011-06-29 22 views
7

Tôi đang sử dụng authlogic với mô hình của tôi sử dụng, với các thiết lập lĩnh vực đăng nhập để sử dụng thư điện tử, như sau:Authlogic: tạo ra "Email đã được thực hiện" lỗi hai lần

acts_as_authentic do |c| 
    c.login_field = :email 
end 

Nếu tôi cố gắng để tạo ra một mới người dùng và email đã được sử dụng, nó sẽ thêm một lỗi email trùng lặp hai lần: (từ bảng điều khiển)

user = User.new(:first_name => "fred", :last_name => "Smith", :email => User.last.email);user.valid?;errors = user.errors 
=> {:email=>["has already been taken", "has already been taken"]} 

Tôi đoán đây là điều cần làm khi sử dụng email làm thông tin đăng nhập, có thể? Tôi không có bất kỳ xác nhận hợp lệ nào khác trên email ngoài validates_format_of và tôi đã thử nghiệm việc xóa xác thực đó (không tạo ra bất kỳ sự khác biệt nào).

Đó là một nỗi đau vì nó làm rối tung các lỗi tôi hiển thị trên biểu mẫu khi xác thực không thành công.

Trước khi tôi cố gắng để hack authlogic, không ai biết tại sao điều này có thể xảy ra? cảm ơn, tối đa

Trả lời

10

Tôi vừa gặp sự cố tương tự. Thử gọi config.validate_email_field = false trong khối acts_as_authentic. Nó sẽ vẫn xác nhận trường đăng nhập, trong trường hợp của chúng tôi trong trường email, nhưng chỉ một lần.

+0

aha, cool, thanks :) –

+2

Ngoài ra hãy chắc chắn rằng bạn không có xác thực được gán theo cách thủ công trên trường đó, ví dụ: 'validates: email,: presence => true'. Điều này dẫn đến việc tôi nhận được thư trả lại 3 lần. – mrt

2

Có hai phương pháp trong Authlogic: validate_email_field và validate_login_field.

Những phương pháp tắt/bật kiểm chứng thực cụ thể:

tôi cũng sử dụng config.login_field :email trong ứng dụng của tôi, và tôi cần phải chắc chắn rằng User#email được xác thực. Vì vậy, trong trường hợp của tôi, tôi đã chọn sử dụng config.validate_login_field = false vì sự khác biệt giữa các xác thực.

+0

cảm ơn thông tin! –

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