Sha256: e821e78b7ef27dff6a61285a9459285d7e1b2c8da7c6eeb7d50bf6634875b149

Contents?: true

Size: 1.9 KB

Versions: 17

Compression:

Stored size: 1.9 KB

Contents

class Marty::Base < ActiveRecord::Base
  self.table_name_prefix = 'marty_'
  self.abstract_class = true

  class << self
    attr_accessor :struct_attrs

    def get_struct_attrs
      self.struct_attrs ||=
        attribute_names - Mcfly::COLUMNS.to_a -
        (const_defined?('MCFLY_UNIQUENESS') &&
         const_get('MCFLY_UNIQUENESS') || []).map(&:to_s)
    end

    def mcfly_pt(pt)
      tb = table_name
      where("#{tb}.obsoleted_dt >= ? AND #{tb}.created_dt < ?", pt, pt)
    end

    def get_final_attrs
      final_attrs = get_struct_attrs
      return final_attrs if final_attrs.present?

      # otherwise raise with error line
      raise "Marty::Base: no attributes for #{self}"

      # for more detailed debugging use this code instead
      # st = caller.detect{|s|s.starts_with?('DELOREAN__')}
      # re = /DELOREAN__([A-Z][a-zA-Z0-9]*)[:]([0-9]+)[:]in `([a-z_0-9]+)__D'/
      # m = re.match(st)
      # if !m
      #   st = "No attributes #{st} #{self}"
      #   puts st unless File.readlines(Rails.root.join('tmp','dlchk')).
      #                   map(&:chop).detect{|l|l==st}
      # else
      #   loc = "#{m[1]}::#{self}::#{m[2]}"
      #   str = "*** No attributes %-40s %-20s   %s" % [loc, m[3], attr]
      #   puts str unless File.readlines(Rails.root.join('tmp','dlchk')).
      #                    map(&:chop).detect{|l|l==str}
      # end
    end

    def make_hash(inst)
      fa = get_final_attrs
      inst.attributes.slice(*fa)
    end

    def make_openstruct(inst)
      return nil unless inst

      fa = get_final_attrs
      os = OpenStruct.new(inst.attributes.slice(*fa))
      if self == Marty::DataGrid
        def os.lookup_grid_distinct_entry(pt, params)
          dgh = to_h.stringify_keys.slice(
            'id', 'group_id', 'created_dt', 'metadata', 'data_type')
          Marty::DataGrid.lookup_grid_distinct_entry_h(pt, params, dgh)
        end
      end
      os
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
marty-14.3.0 app/models/marty/base.rb
marty-14.0.0 app/models/marty/base.rb
marty-13.0.2 app/models/marty/base.rb
marty-11.0.0 app/models/marty/base.rb
marty-10.0.3 app/models/marty/base.rb
marty-10.0.2 app/models/marty/base.rb
marty-10.0.0 app/models/marty/base.rb
marty-9.5.1 app/models/marty/base.rb
marty-9.5.0 app/models/marty/base.rb
marty-9.3.3 app/models/marty/base.rb
marty-9.3.2 app/models/marty/base.rb
marty-9.3.0 app/models/marty/base.rb
marty-8.5.0 app/models/marty/base.rb
marty-8.4.1 app/models/marty/base.rb
marty-8.3.1 app/models/marty/base.rb
marty-8.2.0 app/models/marty/base.rb
marty-8.0.0 app/models/marty/base.rb