gpt4 book ai didi

ruby - 如何突破 Ruby 中的开始 block ?

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:27 24 4
gpt4 key购买 nike

我怎样才能跳出开始 block 并跳转到救援 block ?

def function
begin
@document = Document.find_by(:token => params[:id])
next if @document.sent_at < 3.days.ago # how can I skip to the rescue block here?
@document.mark_as_viewed
rescue
flash[:error] = "Document has expired."
redirect_to root_path
end
end

我尝试使用 next 无效。

最佳答案

嗯,你可以提出一个错误。这就是开始/救援 block 的工作方式。但这不是一个好主意——对业务逻辑使用错误处理通常是不受欢迎的。

重构为一个简单的条件语句似乎更有意义。像这样的东西:

def function
@document = Invoice.find_by(:token => params[:id])
if @document.sent_at < 3.days.ago
flash[:error] = "Document has expired."
redirect_to root_path
else
@document.mark_as_viewed
end
end

看来您在这里混淆了几种不同类型的与 block 相关的关键字:

错误处理(begin/rescue/end)适用于您认为您尝试的某事可能引发错误的情况,并在一种特殊的方式。

next 用于迭代 - 当您循环遍历一个集合并想跳到下一个元素时。

条件语句(ifunlesselse 等)是检查事物状态和执行不同位的常用方法代码取决于它。

关于ruby - 如何突破 Ruby 中的开始 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031166/

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