2012-07-08 24 views
20

Tôi muốn sử dụng tùy chọn đặt ra: xác nhận lại trong mô hình người dùng của mình, vì vậy bất cứ khi nào người dùng thay đổi email của mình, anh ấy cần xác nhận bằng liên kết được gửi qua email.xác định lại

Vấn đề lớn đặt ra là, rằng các email được gửi bao giờ ...

thiết lập của tôi là với devise 2.1.2 là:

sử dụng mô hình:

attr_accessible: unconfirmed_email, ... 

devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable 

trong devise initilizer .rb:

config.reconfirmable = true 

trong các tuyến đường:

devise_for :users 

dưới dạng trường mẫu unconfirmed_email được đặt chính xác. Tôi đã kiểm tra điều này thông qua giao diện điều khiển.

Email xác nhận đầu tiên, khi người dùng đăng ký trên trang được gửi mà không gặp sự cố.

tôi đã cố gắng gỡ rối các vấn đề với việc thêm mã này vào thư mục initializers ghi đè lên tole devise đó được kích hoạt như một cái móc after_update:

module Devise::Models::Confirmable 
    def send_confirmation_instructions 
    debugger 
    end 
end 

nó có vẻ như send_confirmation_instructions không bao giờ được gọi là, vì tôi không bao giờ có được trình gỡ rối.

Tôi bằng cách nào đó có cần phải gọi lại có thể xác nhận lại hoặc tự động được kích hoạt khi đặt thuộc tính mô hình "unconfirmed_email" thành địa chỉ email mới không?

Cảm ơn mọi sự giúp đỡ, j.

+1

Đối reconfirmable làm việc bạn phải thêm cột mới vào bảng Người dùng 't.string: unconfirmed_email # Chỉ khi sử dụng lại được' Bạn đã thực hiện việc này chưa? – Himshwet

+0

hi janders. thats tất cả các thiết lập, tôi có các thuộc tính trong mô hình người dùng của tôi và attr_accessible ... Tôi vẫn havent giải quyết vấn đề này, vì vậy bất kỳ sự giúp đỡ là rất wellcome. – user1311103

+0

Tôi xin lỗi, không thể tìm ra những gì sai – Himshwet

Trả lời

33

OK, đây là đáng xấu hổ ..

Sau khi lặn vào trong mã lập mưu, tôi đã tìm ra rằng bạn không cần phải đặt unconfirmed_email thuộc tính của mô hình người dùng của bạn, nhưng chỉ cần thay đổi thuộc tính email hiện có. Thuộc tính unconfirmed_email chỉ được sử dụng trong nội bộ để Devise lưu trữ địa chỉ email cho đến khi được xác nhận.

Phiên bản sau của đá quý kiến ​​thiết giải thích điều này trong lần di chuyển ban đầu. Đây là "Confirmable" phần (chú ý những nhận xét trên dòng cuối cùng) từ XXX_devise_create_users.rb di cư:

## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

Xin lỗi vì làm phiền, nhưng hy vọng điều này có thể giúp ai đó có cùng một vấn đề ...

+2

Cảm ơn vì điều này. Thật tốt khi biết rằng Devise "automagically" điền vào 'unconfirmed_email' khi tôi cập nhật' email' trong mô hình. Đừng quên đánh dấu câu trả lời của bạn là "Chấp nhận" (vâng, ngay cả khi bạn tự trả lời!). –

+0

Có ... Bạn nghĩ đúng .. ngay cả khi nó đã được sau 2 năm .. nó đã giúp ích cho tôi. :) – Alfie

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