我有一个模型对象,.save 在其上返回 false。 它随后有一个 .errors 属性,这是一个空哈希。 哈希不应该包含出错的列表吗? 我还能如何确定保存不起作用的原因?
泰佛瑞德
这意味着您的某个回调可能正在停止保存,但没有列出验证错误。
检查返回值,尤其是任何before_
回调的返回值,并确保它们没有返回false
如果它们返回 false
,则活动记录将停止将来的回调并从保存中返回 false。
您可以在"取消回调"下阅读一些相关信息
1)禁用before_create,before_save,before_update并检查它在哪里保存一天
2) 如果回滚是由这些方法之一引起的,请检查这些方法在您不打算回滚时是否返回 true。
例如,如果您为布尔字段设置默认值以避免 nil,您可能会这样做
def set_defaults_before_create
self.my_boolean_field ||= false
end
在此示例中,方法set_defaults_before_create始终返回 false,从而回滚您的事务。所以重构它以返回 true
def set_defaults_before_create
self.my_boolean_field ||= false
true
end