Search code examples
ruby-on-rails-3after-create

How should I use after_create with a condition in the model


I have a method that is called after the creation of an object

after_create :send_welcome_email

Is there a way to limit this to a condition, such as the value of an attribute of an object

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

for example?


Solution

  • There are three ways to do this: Symbol, String, or 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