有没有办法用方法短路动作并确保之后在Rails中不调用其他方法?
def update
return head(:unauthorized) unless available_user_settings?
if setting.update....
...
end
我想做更多的事情:
def update
ensure_settings_modifiable!
if setting.update....
...
end
但如果不应更新设置,我不知道如何渲染头部并停止其余操作。
答案 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