Edited at

ActiveModelでコールバックを使いたい時のまとめ

More than 3 years have passed since last update.

ActiveModelでコールバックを使ったときに少し調べたことを、まとめてみました。

確認したバージョン


  • rails 4.2.3


after_create, before_createしたいとき

rails guidesにも書いてありました。

http://railsguides.jp/active_model_basics.html#callbacks%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB

define_model_callbacksでcallbackさせたいアクションを定義して、かつそのアクションのなかでrun_callbacksを書いてやる必要があるらしい。saveupdatedestroyもこれでいけるみたい。

class UserRegistraionForm

include ActiveModel::Model

define_model_callbacks :create

before_create :some_action

def create
run_callbacks :create do
# saveする動作を書く
end
end

def some_action
# callbackとして実行させたいこと
end

end


after_validation, before_validationしたいとき

こっちは調べてもなかなか出てこなかった…

こちらは上記の方法ではだめで別のモジュールをincludeしてやる必要が有りました。****_validationの場合は、define_model_callbacksも不要みたいです。

class UserLoginForm

include ActiveModel::Model
include ActiveModel::Validations::Callbacks

before_validation :some_action

def some_action
# callbackとして実行させたいこと
end

end

小一時間ググりましたが、どっちもちゃんと公式を見たら書いてあった。ちゃんと調べようと思いました。