gpt4 book ai didi

ruby-on-rails - Rails Controller 跳过 after_action

转载 作者:行者123 更新时间:2023-12-02 20:34:40 28 4
gpt4 key购买 nike

假设我有一个 Controller ,如下所示:

class ExampleController < ApplicationController

after_action -> { puts 'Call me only on success' }

def create
obj = Obj.create(obj_params)
if obj.errors.empty?
render json: obj
else
render json: { errors: obj.errors }, status: 422
end
end
end

是否有一种干净的方法来阻止所有 after_action 的执行?我知道的事情:

  1. 设置某种实例变量并在每个 after_action 中检查它
  2. render :something and return 不会停止after_action
  3. 引发错误(如 create!)会起作用,但当我不想返回错误细节并且仍然以 422 响应时我会使用它

我会满足于 render :foo 和 do_not_call_afters

最佳答案

你可以询问响应是否成功:

after_action :call_me_on_success, if: -> { response.successful? }

这对所有 2XX 代码都有效:

response.method(:successful?).source
=> "def successful; status >= 200 && status < 300; end"

关于ruby-on-rails - Rails Controller 跳过 after_action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com