Module: ActiveRecord::Store::ClassMethods
Relationships & Source Files | |
Defined in: | activerecord/lib/active_record/store.rb |
Instance Method Summary
Instance Method Details
#store(store_attribute, options = {})
[ GitHub ]# File 'activerecord/lib/active_record/store.rb', line 75
def store(store_attribute, = {}) serialize store_attribute, IndifferentCoder.new( [:coder]) store_accessor(store_attribute, [:accessors]) if .has_key? :accessors end
#store_accessor(store_attribute, *keys)
[ GitHub ]# File 'activerecord/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
[ GitHub ]# File 'activerecord/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