我的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方法,它处理从父'release'复制的初始轨道列表,在那里复制父释放轨道位置。
我有另一个名为'add_catalogue_track'的自定义方法,用于处理需要始终通过acts_as_list添加的添加内容,而不管父发布跟踪位置如何。
我最初虽然提到了控制器创建方法的before_create调用,但它也在我的自定义方法上调用。所以简而言之,我的问题是如何使before_create仅应用于create方法,我尝试了`add_catalogue_track'但是这不起作用。
提前致谢。
答案 0 :(得分:2)
after_create
由调用Base.save
的任何内容触发,并且是新记录。 create
方法实际上只是一次调用new
和save
的便捷方法。
您是否在create()
中使用new()
或save()
然后add_catalogue_track()
?如果是这样,那就是触发回调的原因。
您可以做的一件事是在自定义方法中使用skip_callback
:
ProductTrackListing.skip_callback(:create, :before, :set_initial_position)