【发布时间】:2015-08-31 22:31:12
【问题描述】:
我遇到了一个奇怪的问题,我找不到合乎逻辑的解释。
我正在调查一个错误并设置了一些日志记录(通过 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
现在我在滚动条中获取大量数据(每次创建/更新连接时几乎有 2 行)。但奇怪的是:对于某些连接(=> 正是我正在调查的数据错误的连接),我根本没有得到任何数据!
我不明白如何创建连接并将其持久化到数据库中,并且没有任何before_validation 日志记录的痕迹。
看起来回调没有被调用,但除非我弄错了,否则它应该是回调顺序中的第一个 => 什么可以阻止它被调用?
EDIT >> 从回复中复制和粘贴,可能是相关的: 有 3 种情况会创建或更新连接,这些情况是:
- .connexions.create()
- connexion.attr = "值";连接。保存!
- connexion.update_attributes(attr: "value")
【问题讨论】:
-
试试
Connexion.new(params).valid?。你会看到什么? -
irb(main):022:0> Connexion.new.valid? [Rollbar] 调度有效负载 [Rollbar] 详细信息:rollbar.com/instance/uuid?<uuid> [Rollbar] 发送有效负载 => true irb(main):023:0> [Rollbar] 成功 => 模型有效 & 数据发送到 rollbar => 一切正常不错
-
也许,
Rollbar.log得到:connexion_id => nil后什么都不做?尝试在您的save_info_in_rollbar方法中放入或提出某些内容 -
它实际上是在没有 ID 的情况下进行记录(我也可以看到数据,只是 ID 列为零)
-
试着举起或放些东西。是否仍有意外行为?
标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord