edge badge
Methods
#
S
Instance Public methods
_store_accessors_module()
# File activerecord/lib/active_record/store.rb, line 101
def _store_accessors_module
  @_store_accessors_module ||= begin
    mod = Module.new
    include mod
    mod
  end
end
store(store_attribute, options = {})
# File activerecord/lib/active_record/store.rb, line 74
def store(store_attribute, options = {})
  serialize store_attribute, IndifferentCoder.new(options[:coder])
  store_accessor(store_attribute, options[:accessors]) if options.has_key? :accessors
end
store_accessor(store_attribute, *keys)
# File activerecord/lib/active_record/store.rb, line 79
def store_accessor(store_attribute, *keys)
  keys = keys.flatten

  _store_accessors_module.module_eval do
    keys.each do |key|
      define_method("#{key}=") do |value|
        write_store_attribute(store_attribute, key, value)
      end

      define_method(key) do
        read_store_attribute(store_attribute, key)
      end
    end
  end

  # assign new store attribute and create new hash to ensure that each class in the hierarchy
  # has its own hash of stored attributes.
  self.stored_attributes = {} if self.stored_attributes.blank?
  self.stored_attributes[store_attribute] ||= []
  self.stored_attributes[store_attribute] |= keys
end