Edited at

ActiveRecord はそのインスタンスを create したのか update したのか

More than 1 year has passed since last update.

ある record を save したときに、 create のときだけ次に何かを処理したい(しかも、コールバック以外で)ということがありました。

とりあえず思いついた方法は

> record.id_previously_changed?

=> true

Rails のコードを読むと

    def create_or_update(*args, &block)

_raise_readonly_record_error if readonly?
return false if destroyed?
result = new_record? ? _create_record(&block) : _update_record(*args, &block)
result != false
end

https://github.com/rails/rails/blob/78d47aa4bf0bf33a216cc7d9f1c6eeb182f178f4/activerecord/lib/active_record/persistence.rb#L701-L706

ということなので、 create / update を分離しているだけで、それぞれの中を読んでも、特に区別するためのデータはなさそう。