module QbwcRequests::OrderedFields

Public Class Methods

included(base) click to toggle source
# File lib/qbwc_requests/ordered_fields.rb, line 57
def self.included(base)
  base.extend(ActiveModel::Naming)
  base.include(ActiveModel::Validations)
  base.include(ActiveModel::Conversion)
  base.extend(ClassMethods)
  base.validates_with(SubModelsValidator)
end

Public Instance Methods

ordered_fields() click to toggle source
# File lib/qbwc_requests/ordered_fields.rb, line 65
def ordered_fields
  return {} if self.class.attr_order.blank?
  new_hash = {}
  for attribute in self.class.attr_order
    value = send(attribute)
    if value.present?
      if value.kind_of?(Array)
        result = value.map { |item | item.respond_to?(:ordered_fields) ? item.ordered_fields : item }
      else
        result = value.respond_to?(:ordered_fields) ? value.ordered_fields : value
      end
      new_hash[attribute] = result
    end
  end
  new_hash
end