2012-11-23 13 views
14

Recentemente ho aggiunto il modulo confirmable alla mia classe Utente. Ho già un buon sistema di mailing (Sidekiq, Sendgrid ...) nella mia app, quindi ho creato la mia mail di "conferma account". Il problema ora è di disabilitare Devise dall'inviare la sua e-mail predefinita. C'è un modo per disabilitare completamente il sistema di mailing di Devise?Disabilita Devise email confermabili

Aggiunto:

  • voglio mantenere il modulo confirmable, come io sto usando i suoi attributi e percorsi.
  • Non riesco a utilizzare skip_confirmation! perché voglio che gli utenti confermino il proprio account.
  • Voglio solo disabilitare i messaggi di posta elettronica Devise.

risposta

35

utilizzare la sorgente, 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 

Quindi ignorare questo metodo nel modello di non fare nulla.

+0

Ottima risposta. Grazie! – Gawyn

+4

Felice di averlo aiutato. Se usi bundler, puoi sempre consultare facilmente qualsiasi fonte di gemma con 'bundle open ' per dare un'occhiata in giro. – Thilo

3

penso solo rimuovendo

:confirmable 

dal modello utente dovrebbe farlo

o hai provato disabilitando

config/environments/development.rb 

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

Ho bisogno del modulo confermabile perché sto confermando gli utenti. Uso le rotte di conferma che mi escono e anche gli attributi confermabili della classe User. Non voglio che Devise invii una mail, come voglio mandare la mia. – Gawyn

+0

ah giusto capisco, non potresti semplicemente modificare il mailer elaborato per vedere come lo vuoi anche tu, sembra uno sforzo per non usare le funzionalità incorporate? – Richlewis

+0

vedi risposta aggiornata, potrebbe funzionare. – Richlewis

3

Usa skip_confirmation! metodo prima di salvare qualsiasi oggetto.

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

Non voglio saltare la conferma. Voglio solo che Devise non invii la sua e-mail, poiché sto inviando il mio. – Gawyn

+0

@ CristianPlanasGonzález skip_confirmation! salterà solo il metodo di conferma di inventare non il tuo metodo di conferma. Si prega di provare questo funzionerà. – Santosh

+0

skip_confirmation!imposta l'attributo confirm_at su Time.now, confermando sostanzialmente l'utente. Sto usando tutto il modulo confermabile Devise, tranne la posta. – Gawyn

7

Prova sovrascrivendo il seguente metodo di concepire nel modello:

def confirmation_required? 
    !confirmed? 
end 

o utilizzare skip_confirmation!:

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

Ciò è utile quando si importano i dati seme. – scarver2

1

vi consiglio

User.skip_reconfirmation!

Questo è saltare confermare la posta e aggiornare l'e-mail da non usare "conferma!"

1

remove (:confirmable) dal modello di escogitare ex: - qui il mio modello di dispositivo è l'utente qui utilizzato in questo modo.

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

end 
Problemi correlati