validatesの「on」は以下のように使われます。
# create validates :email, presence: true, on: :create # update validates :email, presence: true, on: :update
『:create』はモデルデータを最初に作成するときにバリデーションが実行され、『:update』はモデルデータを更新するときにバリデーションが実行されます。
アクションの『create』『update』ではない。saveが『作成』か『更新』か。
私も最初勘違いしていたが、この『create』『update』がアクションだと思って、他のアクションでsaveした時は『on: :アクション名』とすれば良いと思ってました。しかし、参考のStackoverflowにも書かれてあるとおり、この『create』『update』はsaveする際に『作成』するのか『更新』するのかということなので、あるアクションでvalidateを実行したいとき『on』には、モデルデータを作成するなら『create』、更新するなら『update』すれば良いということです。