【问题标题】:How to debug silent database errors (such as "save") in Rails?如何在 Rails 中调试静默数据库错误(例如“保存”)?
【发布时间】:2012-10-09 22:17:36
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      根据this post,类似以下的工作:

      logger.debug @item.errors.full_messages
      

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • +1 用于填写其他人在这里没有提到的其他可能性。这只是节省了我的一天。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 2013-09-08
        • 2020-10-02
        • 2012-06-28
        • 2017-02-22
        相关资源
        最近更新 更多