module ActiveRecord::Store::ClassMethods - activerecord-4.2.3 Documentation

# module ActiveRecord::Store::ClassMethods

### Public Instance Methods

store(store_attribute, options = {}) click to toggle source

    # File lib/active_record/store.rb, line 75
    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) click to toggle source

    # File lib/active_record/store.rb, line 80
    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.local_stored_attributes ||= {}
      self.local_stored_attributes[store_attribute] ||= []
      self.local_stored_attributes[store_attribute] |= keys
    end

stored_attributes() click to toggle source

    # File lib/active_record/store.rb, line 110
    def stored_attributes
      parent = superclass.respond_to?(:stored_attributes) ? superclass.stored_attributes : {}
      if self.local_stored_attributes
        parent.merge!(self.local_stored_attributes) { |k, a, b| a | b }
      end
      parent
    end