Module: Models::Packable::ClassMethods

Defined in:
app/concerns/models/packable.rb

Overview

ActiveSupport::Concern mixin: class methods.

Instance Method Summary collapse

Instance Method Details

#md5_hash_items(use_line_items) ⇒ String

Builds a stable MD5 digest of the given line items (sorted by SKU) so
equivalent packaging contents can be detected.

Parameters:

  • use_line_items (Enumerable)

    line items to fingerprint

Returns:

  • (String)

    hex digest of the sorted "sku:quantity" pairs



16
17
18
19
# File 'app/concerns/models/packable.rb', line 16

def md5_hash_items(use_line_items)
  items_string = use_line_items.to_a.sort_by(&:sku).map { |li| "#{li.sku}:#{li.quantity.abs}" }.join(',')
  Digest::MD5.hexdigest(items_string)
end