Rails:跟踪回调

时间:2013-01-20 00:27:41

标签: ruby-on-rails callback

我的模型无法使用update_attributes正确更新,但会使用update_column进行更新。我假设这是因为回调正在干扰。不幸的是,它没有抛出任何错误,所以我无法弄清楚问题究竟来自哪里。

有没有办法追踪回调,所以我可以一个接一个地浏览它们,直到找到罪魁祸首?

2 个答案:

答案 0 :(得分:0)

检查您传递给update_attributes()方法的参数是否可以进行质量分配。

它们应该在您的rails模型中定义为:attr_accessible,否则在保存之前它们将被剥离。

class Widget < ActiveRecord::Base
  attr_accessible :name
end

此处有更多信息http://guides.rubyonrails.org/security.html

答案 1 :(得分:0)

The API documentation显示了如何访问回调链。

以下是您可以在控制台中使用的一些内容,它们可以为您提供这个想法:

# Print before_validate callbacks
Post._validate_callbacks.select { |cb| cb.kind.eql? :before }.each { |cb| puts cb.filter }

# Print after_update callbacks
Post._update_callbacks.select { |cb| cb.kind.eql? :after }.each { |cb| puts cb.filter }

请记住,对模型的更新也会调用save,因此最好全部浏览它们。