41
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

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

41
29
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
41
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?