Question

Recently I added the confirmable module to my User class. I already have a quite nice mailing system (Sidekiq, Sendgrid...) in my app, so I created my own "confirm account" mail. The problem now is to disable Devise from sending its default email. Is there any way to completely disable the Devise mailing system?

Added:

  • I want to maintain the confirmable module, as I am using its attributes and routes.
  • I can't use skip_confirmation! because I want the users to confirm their account.
  • I just want to disable Devise mails.
Was it helpful?

Solution

Use the source, Luke:

# lib/devise/models/confirmable.rb

# A callback method used to deliver confirmation
# instructions on creation. This can be overriden
# in models to map to a nice sign up e-mail.
def send_on_create_confirmation_instructions
  send_devise_notification(:confirmation_instructions)
end

So override this method in your model to do nothing.

OTHER TIPS

Try overriding the following devise method in your model:

def confirmation_required?
  !confirmed?
end

or use skip_confirmation!:

user = User.new(params) 
user.skip_confirmation! 
user.save! 

Use skip_confirmation! method before saving any object.

def create
  @user = User.new(params[:user])
  @user.skip_confirmation!
  @user.save!
end

I think just removing

:confirmable

from the user model should do it

or have you tried disabling

config/environments/development.rb

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

I recommend you

User.skip_reconfirmation!

That is skip confirm mail and update email not to use "confirm!"

remove (:confirmable) from devise model ex:- here my devise model is User here I used like this.

class User < ActiveRecord::Base  
     devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,:omniauthable

end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top