Sha256: ec6f0fa312a062dcf898bda3e2c64cbc6eceb6c2958fbf67b73f29d94fcfaee8

Contents?: true

Size: 767 Bytes

Versions: 1

Compression:

Stored size: 767 Bytes

Contents

module Populator
  class Record
    attr_accessor :attributes
    
    def initialize(model_class, id)
      @attributes = { :id => id }
      @columns = model_class.column_names
      @columns.each do |column|
        self.instance_eval <<-EOS
          def #{column}=(value)
            @attributes[:#{column}] = interpret_value(value)
          end
          
          def #{column}
            @attributes[:#{column}]
          end
        EOS
      end
    end
    
    def attribute_values
      @columns.map do |column|
        @attributes[column.to_sym]
      end
    end
    
    private
    
    def interpret_value(value)
      case value
      when Array then value.rand
      when Range then value.to_a.rand
      else value
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ryanb-populator-0.1.0 lib/populator/record.rb