Several times I found myself of need of a method that tells whether an 
ActiveRecord instance has just been created. For example, when writing 
generic activity logging code that needs to know whether model is newly 
created as opposed to updated, but the invocation is in a service outside 
of the model itself and thus I can't just write `after_create` and 
`after_update` hooks, except perhaps just to set custom flags for the 
service to inspect.

It's not the same as `new_record?` because `new_record?` is only true 
before record is saved, not after save. I'm thinking `newly_created?` or 
`just_created?` name. Calling it `created?` would be too ambiguous and 
higher chance to clash with similarly named method by application 
developers in their own code.

Essentially `new_record?` to `newly_created?` is the same as 
`marked_for_destruction?` is to `destroyed?`, or as `changes` is to 
`previous_changes`.

In my app I've implemented the code like this:

def newly_created?
>   id_changes = previous_changes['id']
>   id_changes && id_changes.last && !id_changes.first
> end
>

Is this something anyone else found doing, and would it be helpful for 
ActiveRecord to provide this method?

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/0cfa6f9b-ea0f-4046-86a8-3520f21693de%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to