gpt4 book ai didi

ruby-on-rails - 脱离 Controller Action

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:38 27 4
gpt4 key购买 nike

我的问题是是否有一个 rails 等同于“脱离” Controller 操作,例如

def new
if some_confirmation
do_stuff
break #I know this only breaks out of a loop but I want it to break out of the action. is this possible?
end
do_some_other_stuff_which_it_should_not_reach_after_breaking
end

这也引发了一个问题,如果我做错了什么,不应该用 before_filter

还有最后一个问题,是将所有内容包含在此类定义中的“if-else”语句中(不一定是 Controller 操作,但也包括正常定义)更好,还是像我打算在那里做的那样^?

最佳答案

答案是使用return。 Controller 操作只是方法,return 是您提前从方法返回的方式。这样做没有错,您应该根据需要随意这样做。

正如您提到的,您可以使用 before_filter(在 Rails 4 中已重命名为 before_action),但我建议仅在 Controller 中的每个方法都使用时才这样做需要条件。否则,您最终会在顶部看到一个巨大的 before_action 列表,您在稍后阅读操作时必须牢记(或感到惊讶);如果您必须记住哪些适用于哪些操作,哪些不适用于哪些操作,它会变得特别困惑!

是否首选 if-else 语句是一种观点……但是,受到 Avdi Grimm 的优秀著作 Confident Ruby 的启发,我建议按照您在此处所做的那样做...您设置的本质上是一个保护条款,您可以借此提前退出该方法,然后进入该方法的实际内容。在 Confident Ruby 中,Avdi Grimm 谈到将方法分解为逻辑部分以讲述一个连贯的故事,而不会迫使读者在方法的整个生命周期中跟踪各种状态。使用 if-else 语句往往会迫使读者跟踪状态,而使用保护子句可以让您快速识别离开该方法的条件,然后忘记它们,这样您就可以专注于该方法的实际目的。

关于ruby-on-rails - 脱离 Controller Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25463553/

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