Rails:モデルのコールバック(before_filter/before_action)などをスキップする

記事公開日:
最終更新日:

This post is also available in: English-US (英語)

Railsで開発していて、例えば、ユーザーモデル(User Model)で コールバック(例として、before_create) を利用している際に、seedファイル(もしくはその他のモデル)などにて処理をスキップしたい場合、以下のようなコードを付け加えると幸せになれるかもって話です。
db:seed の初期データを挿入する時や特定のモデルにて処理をスキップさせたい時などに便利です。

例として、ユーザーモデルにおいて before_create を利用している状態とします。

#User Model
class User < ActiveRecord::Base
  before_create :set_something

  private
  def set_something
    #something
  end
end

で、before_create をスキップするコードを seed.rb などに追加します。

#seed.rb
User.skip_callback(:create, :before, :set_something)

また、他の例として before_save を利用している場合には、以下のようなコードになります。

#seed.rb
User.skip_callback(:save, :before, :set_something)

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。