Ruby / Rails расширение блока if из одной строки - rubocop - PullRequest
0 голосов
/ 11 октября 2019

Мне нужно изменить блок 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

Это просто, но крик моего рубокопа Use a guard clause instead of wrapping the code inside a conditional expression. Если я добавлю Success до последнего end, то некоторые из моих спецификаций потерпят неудачу с ошибкой

ожидал, что ответ будет иметь код состояния (422), но это было: ok (200)

Без Success все проходит как надо.

1 Ответ

4 голосов
/ 11 октября 2019

AFAIK, Рубокоп жалуется, что не вернулся рано. Это должно решить проблему 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

Подробнее о элемент охраны .

...