Pergunta

Eu tenho um retorno de chamada after_update no meu modelo

after_update :do_something

No entanto, não quero que o método seja chamado após a criação de um objeto.É possível adicionar uma isenção ao after_update?

Foi útil?

Solução

Rails tem muitos diferentes retornos de chamada.Quando você cria um objeto after_create e after_save são chamados.Ao atualizar um objeto existente, after_update e after_save são chamados.

after_create é usado apenas na criação como after_update serve apenas para atualizar objetos existentes. after_save é executado em ambos os casos, após o retorno de chamada de criação/atualização adequado.

Se você não deseja que o método seja chamado somente após a criação de um objeto, você deve usar after_create em vez de.

Você pode definir quantos retornos de chamada precisar

class User < ActiveRecord::Base
  after_create :one_method
  after_create :another_method
  after_update :one_more_method_only_for_updates

  def one_method
  end

  def another_method
  end

  def one_more_method_only_for_updates
  end
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top