module MasterTable

Public Class Methods

add(table_name) click to toggle source
# File lib/master_table.rb, line 24
def self.add table_name
  if not self.table.table_exists?
    ActiveRecord::Schema.define do
      create_table MasterTable.table_name do |t|
        t.string MasterTable.column_name, :null => false
      end
      add_index MasterTable.table_name, MasterTable.column_name, :unique => true
    end
  end
  if self.table.where(self.column_name => table_name).empty?
    new_finite = self.table.new
    new_finite.send self.column_name.to_s + '=', table_name
    new_finite.save
  end
end
all() click to toggle source
# File lib/master_table.rb, line 14
def self.all
  if self.table.table_exists?
    self.table
    .all
    .collect {|x| x.send self.column_name.to_s}
    .collect {|x| get_finite x}
  else
    []
  end
end
column_name() click to toggle source
# File lib/master_table.rb, line 8
def self.column_name
  default_column_name self.table_name
end
delete(table_name) click to toggle source
# File lib/master_table.rb, line 39
def self.delete table_name
  matches = self.table.where self.column_name => table_name
  matches.each do |m|
    self.table.destroy m
  end
  if self.table.count.eql? 0
    ActiveRecord::Schema.define do
      drop_table MasterTable.table_name
    end
  end
end
table() click to toggle source
# File lib/master_table.rb, line 11
def self.table
  get_finite self.table_name, :do_not_redefine_accessor
end
table_name() click to toggle source
# File lib/master_table.rb, line 5
def self.table_name
  :active_finites
end