没有调用before_validation?

时间:2015-06-12 13:02:35

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我有一个奇怪的问题,我无法找到合乎逻辑的解释。

我正在调查一个错误,并将一些日志记录到位(通过Rollbar),这样我就可以看到我的某个模型的某些实例的演变。

这是我得到的:

class Connexion < ActiveRecord::Base
    before_validation :save_info_in_rollbar
    after_save :save_info_in_rollbar

    def save_info_in_rollbar
      Rollbar.log("debug", "Connexion save", :connexion_id => self.id, :connexion_details => self.attributes)
    end
end

现在我在rollbar中获取了大量数据(每次创建/更新连接时都会有2行)。但奇怪的是以下内容:对于某些连接(=&>完全是我正在研究的有错误数据的连接),我根本没有数据!

我不知道如何创建连接并将其持久保存到数据库中,并且没有任何before_validation日志记录的痕迹。 看起来回调没有被调用,但除非我弄错了,否则它应该是回调顺序中的第一个=&gt;什么可以阻止它被召唤?

编辑&gt;&gt;从回复中复制并粘贴可能是相关的: 有3种案例可以创建或更新连接,并且案例是:

  • .connexions.create()
  • connexion.attr =“value”; connexion.save!
  • connexion.update_attributes(attr:“value”)

3 个答案:

答案 0 :(得分:5)

唯一不会运行回调的情况是:

但是:我可能会错过一个案例。另外,我假设ActiveRecord / ActiveModel中没有导致此错误。

答案 1 :(得分:1)

很抱歉这些愚蠢的问题,解释是我们有2个应用程序在同一个数据库上工作,并且修改是由另一个应用程序(当然没有发送Rollbar更新)。

有时最棘手的问题有最简单的答案哈哈

答案 2 :(得分:0)

首先,您在实例方法中不需要self,因为该方法的范围是实例。

其次,您需要检查,如何将数据保存到数据库。您可以跳过Rails中的回调:Rails 3 skip validations and callbacks

第三,仔细检查数据。

相关问题