module Ansr::Model::ClassMethods

Public Instance Methods

build_default_scope() click to toggle source
# File lib/ansr/model.rb, line 47
    def build_default_scope
Ansr::Relation.new(model(), table())
    end
column_types() click to toggle source
# File lib/ansr/model.rb, line 51
def column_types
  TypeProxy.new(table())
end
engine() click to toggle source
# File lib/ansr/model.rb, line 39
def engine
  model()
end
inherited(subclass) click to toggle source
Calls superclass method
# File lib/ansr/model.rb, line 10
def inherited(subclass)
  super
  # a hack for sanitize sql overrides to work, and some others where @klass used in place of klass()
  subclass.instance_variable_set("@klass", subclass)
  # a hack for the intermediate abstract model classes to work with table_name
  subclass.instance_variable_set("@table_name", subclass.name)
end
model() click to toggle source
# File lib/ansr/model.rb, line 18
def model
  m = begin
    instance_variable_get "@klass"
  end
  raise "#{name()}.model() -> nil" unless m
  m
end
references() click to toggle source
# File lib/ansr/model.rb, line 26
def references
  []
end
spawn() click to toggle source
# File lib/ansr/model.rb, line 5
def spawn
  s = build_default_scope
  s.references!(references())
end
table() click to toggle source
# File lib/ansr/model.rb, line 30
def table
  type = (config[:table_class] || Ansr::Arel::BigTable)
  if @table
    # allow the table class to be reconfigured
    @table = nil unless @table.class == type
  end
  @table ||= type.new(self)
end