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

时间:2013-01-30 00:53:12

标签: ruby-on-rails ruby-on-rails-3

我有一个模型对象,其中.save返回false。它随后有一个.errors属性,它是一个空哈希。哈希不应该包含出错的列表吗?我怎样才能确定保存无效的原因?

TY, 佛瑞德

2 个答案:

答案 0 :(得分:10)

这意味着您的某个回调可能正在停止保存,但未列出验证错误。

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

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

您可以在“取消回调”

下阅读一些关于here的内容

答案 1 :(得分:1)

1)禁用 before_create,before_save,before_update 并检查它保存当天的位置

2)如果回滚是由其中一种方法引起的,请在不打算回滚时检查这些方法是否返回true。

例如,如果你为boolean字段设置默认值以避免nil,你可能会这样做

def set_defaults_before_create
  self.my_boolean_field ||= false
end

在此示例方法中, set_defaults_before_create 始终返回 false ,从而回滚您的交易。所以重构它以返回真实的

def set_defaults_before_create
  self.my_boolean_field ||= false
  true
end