2011-09-06 9 views
12

Tengo un método que se llama después de la creación de un objeto¿Cómo debo usar after_create con una condición en el modelo

after_create :send_welcome_email 

¿Hay una manera de limitar esto a una condición, tales como el valor de un atributo de un objeto

after_create :send_welcome_email unless self.role == "Celebrant" 

por ejemplo?

Respuesta

33

Hay tres formas de hacerlo: Símbolo, Cadena o Proc.

class User < ActiveRecord::Base 

    after_create :send_welcome_email, unless: :is_celebrant? 
    after_create :send_welcome_email, unless: "is_celebrant?" 
    after_create :send_welcome_email, unless: Proc.new { self.role == "Celebrant" } 

end 

Documentation

+2

los detalles de documentación han sido trasladados a [aquí] (http://guides.rubyonrails.org/active_record_callbacks.html#using-if-and-unless-with-a-symbol) – gotva

Cuestiones relacionadas