5

如何获取有关 Rails 中静默发生的错误的更多信息,例如 @object.save?

4

3 回答 3

10

添加 bang 以便在验证失败时引发错误。

@article.save!
# ActiveRecord::RecordInvalid: Validation failed: Title can't be blank...

save如果您不希望验证失败,请始终优先使用此方法。

于 2012-10-10T05:25:17.573 回答
7

根据这篇文章,类似以下的工作:

logger.debug @item.errors.full_messages
于 2012-10-09T22:17:36.693 回答
6

有时,AR 会因为验证错误以外的原因静默失败。其他几件要检查的事情是:

  • 不返回 true 的 AR 回调(例如 before_save)
  • 无效的父/子记录
  • @item.valid?, @item.errors.full_messages
  • @item.changes,@item.changed?

我还包括了 user456584 关于检查验证错误的评论。正如 Semyon 所说,@item.save!即使它不是特别有用,至少会引发异常。

于 2013-12-14T06:14:38.920 回答