0

ProductTrackListing モデルには次のものがあります。

acts_as_list :scope => :product_id
before_create :set_initial_position, :only => :create

private

def set_initial_position
   self.position = self.track.position
end

私のコントローラーには、親の「リリース」からコピーされた最初のトラックリストを処理する標準の Create メソッドがあり、親リリースのトラック位置をコピーします。

親リリース トラックの位置に関係なく、acts_as_list を介して常に最後に追加する必要がある追加を処理するために、'add_catalogue_track' という別のカスタム メソッドをセットアップしました。

最初は before_create 呼び出しがコントローラの create メソッドを参照していましたが、カスタム メソッドでも呼び出されています。要するに、私の質問は before_create を create メソッドだけに適用する方法です。

前もって感謝します。

4

1 に答える 1

2

after_createを呼び出すものによってトリガーされBase.save、新しいレコードです。このcreateメソッドは、実際には、一度に呼び出すための便利なメソッドにすぎませnewsave

create()またはnew()を使用していsave()ますadd_catalogue_track()か? もしそうなら、それがコールバックをトリガーしているものでしょう。

できることの 1 つはskip_callback、カスタム メソッドで使用することです。

ProductTrackListing.skip_callback(:create, :before, :set_initial_position)

于 2012-05-21T21:50:26.000 に答える