3

我有一个模型对象,其 .save 返回错误。它随后有一个 .errors 属性,它是一个空哈希。散列不应该包含出错的列表吗?我还能如何确定保存不起作用的原因?

泰,弗雷德

4

2 回答 2

11

这意味着您的回调之一可能正在停止保存,但没有列出验证错误。

检查返回值,尤其是任何before_回调,并确保它们没有返回false

如果它们返回false,则活动记录将停止未来的回调并从保存中返回 false。

您可以在“取消回调”下阅读一些关于它的信息

于 2013-01-30T00:57:17.373 回答
2

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
于 2013-10-04T17:02:52.847 回答