Rails before_createで必須カラムを埋めるような処理をする
ActiveModelのhook methodとバリデーションの実行順の話
日々の作業で出てきた技術メモの切れ端を置いておくページ
ActiveModelのhook methodとバリデーションの実行順の話
before_create hookを使って必須カラム(例えばkeyなど)を埋める処理をして、かつそのカラムの存在確認をvalidationで行っていると実行順の問題で正しくcreateできなくなる。
(先にvalidationが実行された後にbefore_createの内容が実行されるようだ)
この場合keyのバリデーションを外すか、before_validation hookを使った実装方法があるらいい。
before_validationを使う場合は以下のような感じ。
before_validation :generate_key, on: :create