1

作成時に after_create コールバックをスキップしたいモデルのファクトリがあります。次のいくつかのバリエーションを試しました(別のスタックオーバーフローの質問から)...

before_create { |page| Page.skip_callback(:create, :after_create, :retrieve_stream_profile, :update_stream_profile) }

基本的に、rspecテストで次のようなことをするときに、モデルをデータベースに保存したいと思います...

  @page = FactoryGirl.create :page 

しかし、after_create コールバックを発生させたくありません。

4

1 に答える 1

0

スキップするコールバックごとに複数の行が必要なようです。私の場合、それは次のようになります...

after_build { |page| page.class.skip_callback(:create, :after, :add_page_for_superadmins) }
after_build { |page| page.class.skip_callback(:create, :after, :update_stream_profile) }
after_build { |page| page.class.skip_callback(:create, :after, :grab_stream) }
after_build { |page| page.class.skip_callback(:create, :after, :retrieve_past_insights) }

したがって、このページを作成した後は、すべてのコールバックをスキップしてください。これを行うためのより洗練された方法があるかもしれません...それについて考えると、スキップする4つのメソッドのそれぞれの最後のパラメーターとして配列を試したとは思いません。

于 2012-05-09T22:21:02.630 に答える