如何解决Rails如何同时回滚和渲染?
我需要渲染json,然后引发ActiveRecord :: Rollback,我们可以做到吗。
这种情况就像Api被调用,在某些操作失败后,我们需要让api用户知道什么是错误并回滚执行的操作。
尝试过
render json: response,status: status
raise ActiveRecord::Rollback
这将引发错误“ ActiveRecord :: Rollback:ActiveRecord :: Rollback ”
还有其他方法吗
解决方法
您可以将错误存储在实例变量中。如果有错误,请回滚事务,然后呈现错误消息。例如:
def your_action
YourModel.transaction do
@error = do_something
raise ActiveRecord::Rollback if @error
end
return render json: { error: @error },status: :bad_request if @error
return render json: { data: "success" },status: :ok
end
private
def do_something
return :error01 if not operation1
return :error02 if not operation2
return :error03 if not operation3
return nil
end
,
您可以这样:
...
try:
useful_info = shakespeare.json()['contents']['translated']
except KeyError:
useful_info = '' # or return None
...
它将自动回滚您的数据。 谢谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。