Ich möchte die after_commit
Callback überspringen, wenn destroy
ein Objekt, ohne explizite Angabe einer Liste von Methoden mit der on
Syntax. I.e. so etwas wie:Skip nach_commit on destroy in rails
after_commit :foo, except: [:destroy]
Ich möchte die after_commit
Callback überspringen, wenn destroy
ein Objekt, ohne explizite Angabe einer Liste von Methoden mit der on
Syntax. I.e. so etwas wie:Skip nach_commit on destroy in rails
after_commit :foo, except: [:destroy]
Ich habe einen Weg gefunden, es auf Ruby Tips zu tun:
after_commit :foo, if: :persisted?
oder für komplexere Bedingungen:
after_commit, :foo, if: Proc.new {|record| record.persisted? && [...]}
Die kürzeste Lösung wird derjenige geteilt durch @dimid, aber ich glaube, im Moment ist der pragmatische Ansatz, die Ereignisse aufzulisten, die Sie behandeln wollen, und lassen Sie einfach :destroy
weg. Es gibt 3 verfügbare :on
Optionen sofort, :create
, :update
und :destroy
.
auszuführen foo
auf erstellen & Update:
after_commit :foo, :on => [:create, :update]
Alternativ:
after_commit :foo, on: :create after_commit :foo, on: :update
Oder da Rails 5 (https://github.com/rails/rails/pull/22516) ist es auch möglich:
after_create_commit :foo after_update_commit :foo
downvoters, pflege zu erklären? – dimid