lib/active_finite.rb in active_finite-0.1.4 vs lib/active_finite.rb in active_finite-0.1.5
- old
+ new
@@ -1,87 +1,43 @@
require 'pathname'
require 'find'
require 'active_support/inflector'
require 'active_record'
require 'json'
+require_relative 'master_table.rb'
+require_relative 'get_table.rb'
-def get_finite_table sym, *args
- class_name = as_class_name sym
- class_not_defined = not(Object.const_defined? class_name)
- should_force = args.any? {|x| x == :force}
- if class_not_defined or should_force
- anon = Class.new ActiveRecord::Base
- Object.const_set class_name, anon
- else
- Object.const_get class_name
- end
-end
-
-def as_class_name table_name
- table_name.to_s.singularize.capitalize.to_sym
-end
-
def all_finite_tables
- master = get_finite_table(master_table_name)
- if master.table_exists?
- master
- .where("#{default_column_name} != ?", master_table_name)
- .collect {|x| x.send default_column_name.to_s}
- .collect {|x| get_finite_table x}
- else
- []
- end
+ MasterTable.all
end
-def master_table_name
- :active_finites
-end
-
-def add_to_master table_name
- add_finites in_table: master_table_name, values: [table_name]
-end
-
-def delete_from_master table_name
- delete_finites in_table: master_table_name, values: [table_name]
-end
-
-def is_in_master_table? table_name
- if table_name.eql? master_table_name
- true
- else
- get_finite_table(master_table_name)
- .where("#{default_column_name} != ?", master_table_name)
- .where("#{default_column_name} == ?", table_name)
- .any?
- end
-end
-
-
def add_finites args
modify_finite args do |vs, klass, column_name|
if not klass.table_exists?
ActiveRecord::Schema.define do
create_table klass.table_name do |t|
t.string column_name, :null => false
end
+ add_index klass.table_name, column_name, :unique => true
end
- add_to_master klass.table_name
end
+ MasterTable.add klass.table_name
vs.each do |v|
obj = klass.new
obj.send column_name.to_s + '=', v
obj.save
end
end
end
-def delete_finites args,
+def delete_finites args
delete_all = args[:values] == :all
if delete_all
args[:values] = []
end
modify_finite args do |vs, klass, column_name|
+ MasterTable.add klass.table_name
if delete_all
klass.all.each do |o|
klass.destroy o
end
else
@@ -94,20 +50,20 @@
end
if klass.count.eql? 0
ActiveRecord::Schema.define do
drop_table klass.table_name
end
- delete_from_master klass.table_name
+ MasterTable.delete klass.table_name
Object.send 'remove_const', klass.to_s.to_sym
end
end
end
def modify_finite args
table_name = args[:in_table]
if table_name.nil?
- raise 'A table name must be specified for :in_table .'
+ raise 'A table name must be specified for :in_table.'
end
file_name = args[:from_file]
values = args[:values]
column_name = args[:column_name] || :value
if values.nil? and file_name.nil?
@@ -121,14 +77,18 @@
if not file_name.nil?
to_be_modified = to_be_modified.concat JSON.load open file_name
end
- klass = get_finite_table table_name
+ klass = get_table table_name
ActiveRecord::Base.transaction do
yield to_be_modified, klass, column_name
end
end
def default_column_name
:value
+end
+
+def as_class_name table_name
+ table_name.to_s.singularize.capitalize.to_sym
end