module ActiveRecord::PackedFields::ClassMethods

Public Instance Methods

packed(options) click to toggle source
# File lib/active_record/packed_fields.rb, line 5
def packed(options)
  column = options[:column] || :packed
  fields = options[:fields]
  validation = options[:validation]

  serialize column, Hash
  

  fields.each do |field|
    define_method(field) { 
      hash = read_attribute(column)
      if hash
        hash[field]
      end
    }
    define_method("#{field}="){|value|
      hash = read_attribute(column)
      if hash
        hash[field] = value
      else
        write_attribute(column, { field => value })
      end
    }

    validates field, validation.dup if validation
  end
end