LoginSignup
38
28

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-25

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

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

38
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
28