呈现 403 验证错误的标准方法
A standard approach to rendering 403 validation errors
我在 rails 控制器中看到的 JSON API 的典型模式
success = @my_object.save
if success
render @my_object, serializer: SomeSerializer
else
my_custom_error_reporting_method @my_object
end
但这变得非常重复。是否有已知的良好实践方法来解决这个问题?
我想
def my_error_handling_render_method(target_object, options)
if target_object.errors.empty?
render target_object, options
else
my_custom_validation_error_raising_method target_object
end
end
这将允许控制器只做
@my_object.save
my_error_handling_render_method @my_object, serializer: SomeSerializer
这对我来说似乎很合理,但我很少看到这种模式。这让我觉得我没有看到一些重要的东西。
我已经成功使用 save!
和 create!
,如果出现问题,它们会引发异常,rescue_from
在 ApplicationController
中捕获这些异常并呈现东西。
像这样:
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordInvalid, with: ->(error) do
# render something
end
end
class UsersController < ApplicationController
def create
@user = User.new(user_params)
@user.save!
render @user, serializer: UserSerializer
end
end
我在 rails 控制器中看到的 JSON API 的典型模式
success = @my_object.save
if success
render @my_object, serializer: SomeSerializer
else
my_custom_error_reporting_method @my_object
end
但这变得非常重复。是否有已知的良好实践方法来解决这个问题?
我想
def my_error_handling_render_method(target_object, options)
if target_object.errors.empty?
render target_object, options
else
my_custom_validation_error_raising_method target_object
end
end
这将允许控制器只做
@my_object.save
my_error_handling_render_method @my_object, serializer: SomeSerializer
这对我来说似乎很合理,但我很少看到这种模式。这让我觉得我没有看到一些重要的东西。
我已经成功使用 save!
和 create!
,如果出现问题,它们会引发异常,rescue_from
在 ApplicationController
中捕获这些异常并呈现东西。
像这样:
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordInvalid, with: ->(error) do
# render something
end
end
class UsersController < ApplicationController
def create
@user = User.new(user_params)
@user.save!
render @user, serializer: UserSerializer
end
end