可以在顶部调用render方法吗?

时间:2016-02-11 20:14:34

标签: ruby-on-rails ruby-on-rails-4 webhooks

我的网络应用程序处理来自第三方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

1 个答案:

答案 0 :(得分:2)

有趣的是我总是假设渲染会从动作中返回,并且下面的任何内容都不会被处理。刚刚进行了快速测试,结果证明这是错误的。在下面的代码中,put语句仍然执行。

def index      
  render 'index'
  puts "Got here!"
end

因此,在这方面,除非渲染是有条件的,否则渲染的位置并不重要,在您的情况下它似乎不是。