处理异常 Rails 4
Handle exception Rails 4
我对在 Rails 应用程序中处理数据库异常有疑问。
在我的应用程序(电子商务)中,当我想购买产品时,我点击 "Add Product" 并在我的控制器中找到具有该 ID 的产品(我通过参数传递)并保存产品变成 line_items
table.
当我执行 @product = Product.find(params[:id])
时,我应该处理可能的异常吗?是否有可能没有找到记录或其他什么?
默认情况下 rails 不添加任何类型的错误处理。
当我在 table 中插入内容时,rails 验证应该会处理我的错误。不?或者更好,.save
应该保护我。
那么,我应该在这些数据库操作中插入某种保护吗?如果是,我该怎么办?
Rails 和 Ruby 为您提供了引发、处理和管理异常的必要工具。但要将它们正确地粘合在一起以构建可靠的应用程序,则取决于您。
Rails 和 Ruby 不能神奇地为程序员完成所有工作。他们无法理解每种情况下您想做什么。您需要编写代码来指示您的应用程序如何运行。
例如,如果 ID 与数据库中的任何记录都不匹配,Product.find
会引发 ActiveRecord::RecordNotFound
异常。但是默认情况下,这个错误是不会被挽救的。您可以使用 Ruby 和 Rails.
提供的宏和功能来拯救它。
一般来说,您可能想要挽救它并显示 404 错误页面。但是,如果您将 find
范围限定为仅获取与用户关联的产品
Product.where(user_id: current_user.id).find(params[:id])
那么 RecordNotFound
可能会有不同的含义。在这种情况下,记录可能存在但在另一个用户配置文件中,因此您可能需要呈现 401 错误页面。
如您所见,Ruby 和 Rails 无法为程序员做出这些决定,因为正确的错误管理是您为构建应用程序而必须做出的决定的一部分.
我对在 Rails 应用程序中处理数据库异常有疑问。
在我的应用程序(电子商务)中,当我想购买产品时,我点击 "Add Product" 并在我的控制器中找到具有该 ID 的产品(我通过参数传递)并保存产品变成 line_items
table.
当我执行 @product = Product.find(params[:id])
时,我应该处理可能的异常吗?是否有可能没有找到记录或其他什么?
默认情况下 rails 不添加任何类型的错误处理。
当我在 table 中插入内容时,rails 验证应该会处理我的错误。不?或者更好,.save
应该保护我。
那么,我应该在这些数据库操作中插入某种保护吗?如果是,我该怎么办?
Rails 和 Ruby 为您提供了引发、处理和管理异常的必要工具。但要将它们正确地粘合在一起以构建可靠的应用程序,则取决于您。
Rails 和 Ruby 不能神奇地为程序员完成所有工作。他们无法理解每种情况下您想做什么。您需要编写代码来指示您的应用程序如何运行。
例如,如果 ID 与数据库中的任何记录都不匹配,Product.find
会引发 ActiveRecord::RecordNotFound
异常。但是默认情况下,这个错误是不会被挽救的。您可以使用 Ruby 和 Rails.
一般来说,您可能想要挽救它并显示 404 错误页面。但是,如果您将 find
范围限定为仅获取与用户关联的产品
Product.where(user_id: current_user.id).find(params[:id])
那么 RecordNotFound
可能会有不同的含义。在这种情况下,记录可能存在但在另一个用户配置文件中,因此您可能需要呈现 401 错误页面。
如您所见,Ruby 和 Rails 无法为程序员做出这些决定,因为正确的错误管理是您为构建应用程序而必须做出的决定的一部分.