0

メソッドに複数のコールバックを指定するにはどうすればよいですか?

after_commit :assign_awards, on: [:create, :destroy]

private

def assign_awards
  AwardsWorker.perform_async(self.id, self.class.name, self.user_id)
end

エラー:

/activesupport-3.2.13/lib/active_support/callbacks.rb:404: syntax error, unexpected '[', expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
...(transaction_include_action?(:[:create, :destroy]))

何らかの理由で、コールバックはこれでも実行されません:

after_commit :assign_awards, on: :create
after_commit :assign_awards, on: :destroy

次のような2つの異なる方法がある場合にのみ機能します。

after_commit :assign_awards_create, on: :create
after_commit :assign_awards_destroy, on: :destroy

private

def assign_awards_create
  AwardsWorker.perform_async(self.id, self.class.name, self.user_id)
end

def assign_awards_destroy
  AwardsWorker.perform_async(self.id, self.class.name, self.user_id)
end
4

1 に答える 1