我的网络应用程序处理来自第三方API的webhooks,当我收到它时,我需要用200 OK代码回复。在some_api_webhook
方法中进行实际处理之前,我需要检查几个条件,如果其中任何一个条件失败 - 我不能再进一步处理。可以在render
方法的顶部调用some_api_webhook
方法吗?有人告诉我render
应该只放在方法的底部......
我原来的方法:
def some_api_webhook
unless condition_a
render nothing: true, status: :ok, content_type: "text/html"
return
end
unless condition_b
render nothing: true, status: :ok, content_type: "text/html"
return
end
unless condition_c
render nothing: true, status: :ok, content_type: "text/html"
return
end
# main logic is below
# ...
# ...
end
我更喜欢的重写版本,因为它没有对render
的重复调用:
def some_api_webhook
render nothing: true, status: :ok, content_type: "text/html"
return unless condition_a
return unless condition_b
return unless condition_c
# main logic is below
# ...
# ...
end
答案 0 :(得分:2)
有趣的是我总是假设渲染会从动作中返回,并且下面的任何内容都不会被处理。刚刚进行了快速测试,结果证明这是错误的。在下面的代码中,put语句仍然执行。
def index
render 'index'
puts "Got here!"
end
因此,在这方面,除非渲染是有条件的,否则渲染的位置并不重要,在您的情况下它似乎不是。