class StaticRecord::Base
Class that immutable model instances can inherit from
Constants
- KNOWN_TYPES
- RESERVED_ATTRIBUTES
Public Class Methods
attribute(name, value)
click to toggle source
# File lib/static_record/models/base.rb, line 34 def self.attribute(name, value) err = RESERVED_ATTRIBUTES.include?("@@#{name}".to_sym) raise StaticRecord::ReservedAttributeName, "#{name} is a reserved name" if err class_variable_set("@@#{name}", value) end
columns(cols)
click to toggle source
# File lib/static_record/models/base.rb, line 61 def self.columns(cols) class_variable_set('@@_columns', cols) create_store end
get_column_type(column)
click to toggle source
# File lib/static_record/models/base.rb, line 66 def self.get_column_type(column) class_variable_get(:@@_columns)[column] end
new()
click to toggle source
Calls superclass method
# File lib/static_record/models/base.rb, line 24 def initialize attributes.each do |attr, value| instance_variable_set "@#{attr}", value self.class.class_eval do attr_accessor :"#{attr}" end end super end
reference(name, value)
click to toggle source
# File lib/static_record/models/base.rb, line 40 def self.reference(name, value) attribute(name, value) unless value.class < StaticRecord::Base err = 'Reference only accepts StaticRecords' raise StaticRecord::ClassError, err end tables = superclass.bound_static_tables tables[value.class.store.to_sym] = name superclass.bound_static_tables = tables end
Public Instance Methods
attributes()
click to toggle source
# File lib/static_record/models/base.rb, line 51 def attributes attrs = {} klass = self.class klass.class_variables.each do |var| next if RESERVED_ATTRIBUTES.include?(var) attrs[var.to_s.sub(/@@/, '').to_sym] = klass.class_variable_get(var) end default_attributes(attrs) end
Private Instance Methods
default?(column)
click to toggle source
# File lib/static_record/models/base.rb, line 88 def default?(column) self.class.respond_to?("default_#{column}") end
default_attributes(attrs)
click to toggle source
# File lib/static_record/models/base.rb, line 72 def default_attributes(attrs) klass = self.class klass.class_variable_get(:@@_columns).each do |column, _ctype| column_defined = attrs.key?(column) unless column_defined || default?(column) err = "You must define attribute '#{column}' for #{klass.name}" raise StaticRecord::MissingAttribute, err end v = column_defined ? attrs[column] : klass.send(:"default_#{column}") v = klass.send(:"override_#{column}", v) if override?(column) attrs[column] = v end attrs end
override?(column)
click to toggle source
# File lib/static_record/models/base.rb, line 92 def override?(column) self.class.respond_to?("override_#{column}") end