短路控制器动作,xhr用于导轨

时间:2017-03-30 11:08:19

标签: ruby-on-rails ajax controller short-circuiting

有没有办法用方法短路动作并确保之后在Rails中不调用其他方法?

def update
   return head(:unauthorized) unless available_user_settings?
   if setting.update....
   ...
end

我想做更多的事情:

def update
   ensure_settings_modifiable!
   if setting.update....
   ...
end

但如果不应更新设置,我不知道如何渲染头部并停止其余操作。

2 个答案:

答案 0 :(得分:1)

您可以使用before_action之类的内容:

before_action :ensure_settings_modifiable!, only: [:update]

private

def ensure_settings_modifiable!
  head(:unauthorized) unless available_user_settings?
end

如果在head

中调用before_action,则无法执行更新操作

答案 1 :(得分:0)

你可以:

def update
  # stop action if `false` is returned. Otherwise continue
  settings_modifiable? or return
  ...
end