class ActiveRecord::ModelSpaces::ModelSpace

a ModelSpace has a set of models registered with it, from which a Context can be created

Attributes

model_registrations[R]
name[R]

Public Class Methods

new(name) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 24
def initialize(name)
  @name = name.to_sym
  @model_registrations = {}
end

Public Instance Methods

base_table_name(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 57
def base_table_name(model)
  r = get_model_registration(model)
  r[:base_table_name] || TableNames.base_table_name(r[:model])
end
create_context(model_space_key) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 70
def create_context(model_space_key)
  Context.new(self, model_space_key, ModelSpaces.create_persistor)
end
deregister_model(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 37
def deregister_model(model)
  delete_model_registration(model)
end
history_versions(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 41
def history_versions(model)
  get_model_registration(model)[:history_versions] || 0
end
is_registered?(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 66
def is_registered?(model)
  !!unchecked_get_model_registration(model)
end
kill_context(model_space_key) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 74
def kill_context(model_space_key)
  Context.drop_tables(self, model_space_key)
  true
end
register_model(model, opts=nil) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 29
def register_model(model, opts=nil)
  raise "#{model} is not an ActiveRecord model Class" if !is_active_record_model?(model)
  opts ||= {}
  ModelSpaces.check_model_registration_keys(opts.keys)
  set_model_registration(model, opts.merge(:model=>model))
  self
end
registered_model(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 49
def registered_model(model)
  get_model_registration(model)[:model]
end
registered_model_keys() click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 62
def registered_model_keys
  self.model_registrations.keys
end
registered_model_name(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 53
def registered_model_name(model)
  name_from_model(get_model_registration(model)[:model])
end
set_base_table_name(model, table_name) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 45
def set_base_table_name(model, table_name)
  get_model_registration(model)[:base_table_name] = table_name
end

Private Instance Methods

delete_model_registration(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 98
def delete_model_registration(model)
  self.model_registrations.delete(name_from_model(model))
end
get_model_registration(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 88
def get_model_registration(model)
  r = unchecked_get_model_registration(model)
  raise "model: #{model.to_s} is not registered in ModelSpace: #{name}" if !r
  r
end
set_model_registration(model, registration) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 94
def set_model_registration(model, registration)
  self.model_registrations[name_from_model(model)] = registration
end
unchecked_get_model_registration(model) click to toggle source
# File lib/active_record/model_spaces/model_space.rb, line 81
def unchecked_get_model_registration(model)
  mc = all_model_superclasses(model).find do |klass|
    model_registrations[name_from_model(klass)]
  end
  self.model_registrations[name_from_model(mc)] if mc
end