我有一个模型无法使用 update_attributes 正确更新,但会使用 update_column 进行更新。我假设这是因为回调正在干扰。不幸的是,它没有抛出任何错误,所以我无法弄清楚问题到底出在哪里。
有没有办法跟踪回调,以便我可以一个一个地检查它们,直到找到罪魁祸首?
我有一个模型无法使用 update_attributes 正确更新,但会使用 update_column 进行更新。我假设这是因为回调正在干扰。不幸的是,它没有抛出任何错误,所以我无法弄清楚问题到底出在哪里。
有没有办法跟踪回调,以便我可以一个一个地检查它们,直到找到罪魁祸首?
API 文档展示了如何访问回调链。
这是您可以在控制台中使用的一些衬里,它们应该会给您这个想法:
# 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,因此最好将它们全部浏览一遍。
检查您传递给该update_attributes()
方法的参数是否可批量分配。
它们应该:attr_accessible
在您的 rails 模型中定义,否则它们将在保存之前被删除。
class Widget < ActiveRecord::Base
attr_accessible :name
end