> For the complete documentation index, see [llms.txt](https://ploegert.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ploegert.gitbook.io/til/programmy/rails/inspect-previous-changes-to-activerecord-object.md).

# Inspect Previous Changes To ActiveRecord Object

If you modify an ActiveRecord object, before saving it, you can inspect changes with methods like `changed?` and `<attr>_changed?`:

```ruby
book.title = "The Fifth Season"

book.changed? #=> true
book.title_changed? #=> true
book.publication_year_changed? #=> false

book.changes
#=> { "title" => ["Original Title", "The Fifth Season"] }
```

After saving an object, it will no longer be in a *dirty* state and these methods will have no *changes* to return.

If you have a reference to the saved ActiveRecord object, you can look at the *previous* changes with methods like `previous_changes` and `<attr>_previously_changed?`:

```ruby
book.title = "The Fifth Season"
book.save

book.title_previously_changed? #=> true
book.previous_changes
#=> { "title" => ["Original Title", "The Fifth Season"] }
```

[source](https://api.rubyonrails.org/classes/ActiveModel/Dirty.html)
