如何在Rails中跳过before_save过滤器以获取特定命令

时间:2010-04-01 02:48:21

标签: ruby-on-rails

我的before_save定义如下:

  def before_save
    self.token = generate_token
  end

我想跳过它来进行特定的保存方法调用。所以在我的代码中我想做

@user.save

没有调用before_save过滤器。我能这样做吗?

2 个答案:

答案 0 :(得分:8)

你可以这样做:

 @user.send(:update_without_callbacks)

或者create_without_callbacks也可以。我用过这两个但我不知道是否有“save_without_callbacks” 无论哪种方式,都要谨慎使用。

答案 1 :(得分:0)

您还可以在方法中包含条件逻辑,以处理您不希望触发回调的情况。

def before_save
  self.token = generate_token if token.blank?
end

不是一个很好的例子,但你明白了。