大型哈希创建的模式

时间:2018-09-26 22:10:29

标签: ruby-on-rails ruby design-patterns

我正在使用pdftk填充大型(155字段)PDF。我用PDF的字段名称和要填充的值创建大量哈希。

PdfJob将模型中的所有数据收集到一个哈希中,并将该哈希传递到存储在$PDFTK中的wrapper around 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行-estestable键/值对和辅助方法。

0 个答案:

没有答案