Ruby on Rails Explained

Dec 15, 2018

ActiveRecord has a lot of callbacks but probably one of the most frequently used ones is before_save. There are a few other ones that are very similar like before_create and before_update, but they are just more narrowly scoped callbacks hat otherwise does the same thing.

As the name suggests, if you only need the callback to be run when a record is first created, use before_create. But if you need the callback to be invoked every time the record is updated instead, then you can use the before_update callback. And lastly if you need the callback to run when the object is both created and updated, you would use the before_save callback method.

Just like all other ActiveRecord public instance methods, you can access the instance within the invoked callback method simply by using the self reference. Calling the attribute methods directly also works since self is the default object in Ruby.

class Post < ApplicationRecord
  before_save :set_slug

  def set_slug
    self.slug = title.parameterize

Post.create(title: "Foo bar")
=> #<Post id: 1, title: "Foo bar", slug: "foo-bar">