更新ActiveRecord模型时如何跳过除纸质跟踪之外的所有回调?

时间:2016-06-15 16:06:35

标签: ruby-on-rails activerecord paper-trail-gem

我有一个启用了纸张跟踪的模型。在我的一个API路由中,我必须运行the_model.update_columns ...,以便可以修改(并保存)模型实例,而不会触发所有相关的回调(这些回调有很多副作用,我不会这样做。 ; t想要这条特定的路线。)

然而,我仍然希望通过纸质记录记录此更改。我能以合理的方式实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

这简单而笨重,但它可以完全按照您的要求完成:

class ThisModel < ActiveRecord::Base
  ...
  def update_me_no_callbacks(att_1, attr_2, attr_3, ...)
    self.update_columns(
      attr_1: attr_1,
      attr_2: attr_2,
      attr_3: attr_3,
      ...
    )

    # Do paper-trail code
  end
end