model のコールバック関数
モデルオブジェクトには、あらかじめコールバック関数が定義されています。
[model].create とか、[model].save とか、[model].destroy とかなどをしたときに、勝手に呼ばれるメソッドです。
例えば、
と書いておくと、コントローラ辺りで、
とした時に、u.save の所で、first_name の validation が行われる前に、before_validation の中身が実行されます。
と言うわけで、挿入、更新、削除の場合、どんなコールバック関数が勝手に呼ばれてしまうのだろう、というのをまとめました。
上から下に順番に呼ばれます。
・挿入の場合 ([model].create とか [model].save とか)
・更新の場合 ([model].save)
・削除の場合 ([model].destroy)
てな訳です。どうしても隠れ機能が多い Rails ですが、腰元の帯をほどくように、あーれー、と1つ1つ丸裸にしてしまいましょう!
【広告】
[model].create とか、[model].save とか、[model].destroy とかなどをしたときに、勝手に呼ばれるメソッドです。
例えば、
class User < ActiveRecord::Base
validate_length_of :first_name, :maximum => 40
def before_validation
# ここに validate_length_of をする前に行っておきたい処理を書ける
end
end
と書いておくと、コントローラ辺りで、
u = User.find(123)
u.first_name = 'ケロンパ'
u.save
とした時に、u.save の所で、first_name の validation が行われる前に、before_validation の中身が実行されます。
と言うわけで、挿入、更新、削除の場合、どんなコールバック関数が勝手に呼ばれてしまうのだろう、というのをまとめました。
上から下に順番に呼ばれます。
・挿入の場合 ([model].create とか [model].save とか)
before_validation
before_validation_on_create
# ここで validation が行われる
after_validation
after_validate_on_create
before_save
before_create
# ここで DB に挿入される
after_save
after_create
・更新の場合 ([model].save)
before_validation
before_validation_on_update
# ここで validation が行われる
after_validation
after_validate_on_update
before_save
before_update
# ここで DB が更新される
after_save
after_update
・削除の場合 ([model].destroy)
before_destroy
# ここで DB から削除される
after_destroy
てな訳です。どうしても隠れ機能が多い Rails ですが、腰元の帯をほどくように、あーれー、と1つ1つ丸裸にしてしまいましょう!
【広告】
COMMENT
R-18 by 自分
このブログはR-18なもので過激な表現を使用することがあります、なんちゃって。
生まれたままの姿は実に素敵ですね。
生まれたままの姿は実に素敵ですね。
その3で質問したものです by -
説明ありがとうございました
これからもRailsのストリップ劇場期待してます^^;
これからもRailsのストリップ劇場期待してます^^;
なるほど by 自分
なるほど腰元風踊り子さんのストリップ劇場は新しいコンセプトかもしれません。
こちら、いつでも次ステージ開催準備が整っていますからまた質問があったら劇場窓口までお越しください。
こちら、いつでも次ステージ開催準備が整っていますからまた質問があったら劇場窓口までお越しください。
この表現はエロイ!