Rails : model.save 返回 false,但 models.errors 是一个空哈希



我有一个模型对象,.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

相关内容

  • 没有找到相关文章

最新更新