235
votes

How can I check if an ActiveRecord object is new or is already persisted?

2

2 Answers

302
votes

#new_record? does just that:

object.new_record?
387
votes

An ActiveRecord object lifecycle:

1.new record

item = Item.new
item.new_record? #=> true

2.persisted

item.save
item.persisted? #=> true

3.changed

item.name = "other"
item.changed? #=> true

4.destroyed

item.destroy
item.destroyed? #=> true