2015-05-27 16 views
13

Trong Rails 4.2.0, tôi đang sử dụng đá quý Devise để xác thực - devise 3.4.1.Rails 4 - Devise, bỏ qua thông báo xác nhận: after_create

Email xác nhận được gửi ngay khi người dùng được tạo. Chúng tôi cần bỏ qua email xác nhận này và gửi email tùy chỉnh có liên kết xác nhận. Làm ơn giúp tôi giải quyết vấn đề này.

:confirmable được sử dụng trong mô hình Người dùng.

+1

Bạn muốn "bỏ qua" xác nhận email hoặc bạn muốn "thay đổi" xác nhận thư? –

Trả lời

21

Bạn có thể thử này

@user.skip_confirmation! 
@user.save 

Gọi skip_confirmation! trước khi lưu hồ sơ người dùng.

Để bỏ qua các thông báo xác nhận duy nhất mà bạn có thể sử dụng skip_confirmation_notification!

@user.skip_confirmation_notification! 
@user.save 

Hope this helps!


Trong Addition

nếu bạn muốn bỏ qua xác nhận trên cùng một dòng mà không cần tạo một biến và bạn không cần phải xác nhận rằng tài khoản đặc biệt, ví dụ như trong seeds.rb:

User.create(email: "#{role_name}@example.com", 
      password: 'password', 
      password_confirmation: 'password', 
      confirmed_at: Time.now.utc, # skip confirmation) 
+1

Nếu tôi thêm 'skip_confirmation! 'Thì nó sẽ xác nhận tài khoản Người dùng. Nhưng nó không nên hoạt động như thế này, người dùng nên xác nhận tài khoản của họ thông qua email (email tùy chỉnh) –

+0

Ofcourse bạn có thể gửi email tùy chỉnh sau khi bỏ qua email xác nhận phát sinh – RSB

+0

Sau khi tài khoản người dùng được xác nhận thì việc sử dụng thư tùy chỉnh là gì với liên kết xác nhận? –

2

Thay vì tắt email xác nhận trong xây dựng của nhà phát triển và gửi email tùy chỉnh của bạn, bạn có thể tùy chỉnh email xác nhận của nhà phát triển. Bạn có thể tạo tệp xem bản dựng bằng cách sử dụng

rails generate devise:views 

và sau đó tùy chỉnh email xác nhận.

+0

đây là câu trả lời đúng. chỉ cần ghi đè lên mẫu xem! –

0

Bạn có thể làm điều này:

này có thể là những UserController

@user = User.new(email: "#{role_name}@example.com", 
     password: 'password', 
     password_confirmation: 'password', 
     confirmed_at: Time.now.utc, # skip confirmation) 
@user.skip_confirmation! 
@user.confirm 
if @user.save 
    MyMailer.confirmation(@user) 
else 
# your implementation 
end 

Xem doc https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer

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