tips chips

日々の作業で出てきた技術メモの切れ端を置いておくページ

Rails before_createで必須カラムを埋めるような処理をする

ActiveModelのhook methodとバリデーションの実行順の話

before_create hookを使って必須カラム(例えばkeyなど)を埋める処理をして、かつそのカラムの存在確認をvalidationで行っていると実行順の問題で正しくcreateできなくなる。

(先にvalidationが実行された後にbefore_createの内容が実行されるようだ)

この場合keyのバリデーションを外すか、before_validation hookを使った実装方法があるらいい。

before_validationを使う場合は以下のような感じ。

before_validation :generate_key, on: :create