Rails 5 adds after_commit callbacks aliases

Hitesh Rawal

By Hitesh Rawal

on May 11, 2016

This blog is part of our  Rails 5 series.

Rails 4.x has after_commit callback. after_commit is called after a record has been created, updated or destroyed.

1class User < ActiveRecord::Base
2  after_commit :send_welcome_mail, on: create
3  after_commit :send_profile_update_notification, on: update
4  after_commit :remove_profile_data, on: destroy
5
6  def send_welcome_mail
7    EmailSender.send_welcome_mail(email: email)
8  end
9end

Rails 5 added new aliases

Rails 5 had added following three aliases.

  • after_create_commit
  • after_update_commit
  • after_destroy_commit

Here is revised code after using these aliases.

1class User < ApplicationRecord
2  after_create_commit	:send_welcome_mail
3  after_update_commit	:send_profile_update_notification
4  after_destroy_commit	:remove_profile_data
5
6  def send_welcome_mail
7    EmailSender.send_welcome_mail(email: email)
8  end
9end

Note

We earlier stated that after_commit callback is executed at the end of transaction. Using after_commit with a transaction block can be tricky. Please checkout our earlier post about Gotcha with after_commit callback in Rails .

If you liked this blog, you might also like the other blogs we have written. Check out the full archive.

Stay up to date with our blogs. Sign up for our newsletter.

We write about Ruby on Rails, React.js, React Native, remote work,open source, engineering & design.