1. Đảm bảo bạn bao gồm xác nhận trong cuộc gọi Model.devise
class User < ActiveRecord::Base
devise :database_authenticatable, :confirmable ...
end
2. Đảm bảo bạn thêm xác nhận vào di chuyển người dùng
create_table :users do |t|
t.database_authenticatable
t.confirmable
...
end
Nếu bạn đang sử dụng devise 2.0+ thì điều này không thành công vì devise không còn cung cấp trình trợ giúp di chuyển nữa và do đó t.confirmable
sẽ gây ra lỗi. Thay vào đó, sao chép khối có nhãn "Có thể xác nhận" từ hướng dẫn di chuyển của họ .
3. Tạo các chế độ xem phát minh, với một trong các lệnh sau, để bạn có thể ghi đè các chế độ xem của trình phát thư:
rails generate devise:views # global
rails generate devise:views users # scoped
Bây giờ bạn có thể ghi đè các chế độ xem của người gửi thư trong devise/mailer/confirmation_instructions.html.erb
hoặc users/mailer/confirmation_instructions.html.erb
tùy thuộc vào thiết lập của bạn
4. Đối với môi trường phát triển, thêm các dòng cấu hình sau vào/config/environments/development.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {:address => "localhost", :port => 1025}
5. Đối với môi trường sản xuất,/config/environments/production.rb
bạn có thể sử dụng một cái gì đó tương tự như sau (giả sử bạn có máy chủ SMTP trên localhost: 25):
config.action_mailer.default_url_options = {:host => 'yourdomain.com'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "127.0.0.1",
:port => 25,
:domain => 'yourdomain.com'
}
6 Để kiểm tra thiết lập trong quá trình phát triển, hãy cài đặt đá quý mailcatcher, mà bạn sẽ sử dụng làm máy chủ SMTP đang phát triển, bắt tất cả các thư đến và hiển thị chúng trên http://localhost:1080/
:
gem install mailcatcher
Sau khi cài đặt, khởi động máy chủ mailcatcher bằng lệnh:
mailcatcher
Một máy chủ SMTP đồ chơi sẽ chạy trên cổng 1025 để bắt email và chuyển chúng trên cổng HTTP 1080.
Bây giờ bạn có thể tạo một tài khoản và xem các xác nhận.