ACM@UIUC TIL logo ACM@UIUC TIL

When modifying the attributes of an ActiveRecord object, you may want to know what values the modified attributes used to have. ActiveRecord gets some handy methods from the ActiveModel::Dirty module that allow you to check these values out even if the object’s attributes were changed before you received it (though you are out of luck once it has been saved). Just add _was onto the end of the attribute in question.

>> pokemon.name
=> "Charizard"
>> pokemon.name = "Squirtle"
=> "Squirtle"
>> pokemon.name
=> "Squirtle"
>> pokemon.name_was
=> "Charizard"
>> pokemon.save
   ...
=> true
>> pokemon.name_was == pokemon.name
=> true

source