我的模型无法使用update_attributes正确更新,但会使用update_column进行更新。我假设这是因为回调正在干扰。不幸的是,它没有抛出任何错误,所以我无法弄清楚问题究竟来自哪里。
有没有办法追踪回调,所以我可以一个接一个地浏览它们,直到找到罪魁祸首?
答案 0 :(得分:0)
检查您传递给update_attributes()
方法的参数是否可以进行质量分配。
它们应该在您的rails模型中定义为:attr_accessible
,否则在保存之前它们将被剥离。
class Widget < ActiveRecord::Base
attr_accessible :name
end
答案 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,因此最好全部浏览它们。