Необязательные аргументы метода - PullRequest
0 голосов
/ 03 октября 2018

У меня есть два метода, которые делают почти одно и то же, но с небольшой разницей в передаче параметров:

def generate_file(filename)
  draw
  FileUtils.mkdir_p 'tmp/pdf'
  @pdf.render_file "#{Rails.root}/tmp/pdf/#{filename}"
end

def generate_pdf(report, version)
  draw
  path = "tmp/pdf/reports/#{report.reference}"
  FileUtils.mkdir_p(path)
  @pdf.render_file "#{Rails.root}/#{path}/#{version}"
end

Я хочу реорганизовать его и использовать только метод generate_file при вызовефункция, которая генерирует PDF-файлы.Должен ли я пройти дополнительный params (version = nil) и проверить, определен он или нет?

Как это:

def generate_file(filname, version = nil, report = nil) 
  draw
  if report && version
    path = "tmp/pdf/reports/#{report.reference}"
    FileUtils.mkdir_p(path)
    @pdf.render_file "#{Rails.root}/#{path}/#{version}"
  else
    FileUtils.mkdir_p 'tmp/pdf'
    @pdf.render_file "#{Rails.root}/tmp/pdf/#{filename}"
  end
end

1 Ответ

0 голосов
/ 03 октября 2018

Похоже, в предложенном коде есть некоторые опечатки (filname вместо filename) и синтаксические ошибки (например, if..end..else..end).Как насчет чего-то вроде:

def generate_file(filename, version=nil, report=nil) 
  draw
  report_version = report && version
  path = report_version ? "tmp/pdf/reports/#{report.reference}" : "temp/pdf"
  FileUtils.mkdir_p( path )
  @pdf.render_file "#{ Rails.root }/#{path}/#{ report_version ? version : filename }"
end
...