Шаблон для создания большого хэша - PullRequest
0 голосов
/ 27 сентября 2018

Я заполняю большой (155 полей) PDF с помощью pdftk.Я создаю массивные хэши с именами полей PDF и значениями, которые необходимо заполнить.

PdfJob собирает все данные из модели в хэш и передает этот хэш в оболочку вокруг pdftk хранится в $PDFTK.

class PdfJob
  def perform(model)
    $PDFTK.fill_form('path/to/fillable.pdf', Tempfile.new, Fields.call(model))
  end

  private

  class Fields
    def self.call(model)
      {
        OWNER_NAME: "#{model.first_name} #{model.last_name}",
        TOTAL_PRICE: calculate_total_price(model),
        FOO: 'bar',
        # 152 more lines of key/value pairs.
      }
    end

    def self.calculate_total_price(model)
      # Most of these methods are multi-line.
      model.item_relations.sum(&:price)
    end

    # about 50 more class methods to simplify assignment in #call()
  end
end

Я ищу шаблон проектирования или какой-либо другой способ разбить этот хеш на несколько классов, методов или некоторых других модулей, чтобы я не заканчивалс классом Fields с почти 250 строками пар практически не тестируемых пар ключ / значение и вспомогательными методами.

...