Ruby/Rails 从一行扩展 if 块 - rubocop



我必须从一行修改我的if块。

def filename
"#{model.external_id}-inquiry_process_summary_#{timestamp}.pdf" if original_filename
end

像这样:

def filename
if original_filename
result = model.inquiry_field_responses.joins(:inquiry_field).where(inquiry_fields: { name: 'company_name' })
"#{result.first&.value}-inquiry_process_summary_#{timestamp}.pdf"
end
end

这很简单,但我的rubocop的尖叫Use a guard clause instead of wrapping the code inside a conditional expression.如果我在上一个之前添加Successend我的一些规范会失败并出现错误

预期响应具有状态代码 (422(,但它是:正常 (200(

没有Success一切都会按预期过去。

AFAIK,Rubocop抱怨没有早点回来。这应该可以解决 Rubocop 问题:

def filename
return unless original_filename
result = model.inquiry_field_responses.joins(:inquiry_field).where(inquiry_fields: { name: 'company_name' })
"#{result.first&.value}-inquiry_process_summary_#{timestamp}.pdf"
end

阅读有关保护条款的更多信息。