Sha256: 8556445972449b5cde68503a46308f7555b45e930924ffe8270db494c89010d9
Contents?: true
Size: 1.32 KB
Versions: 3
Compression:
Stored size: 1.32 KB
Contents
require 'pathname' require 'find' require 'active_support/inflector' require 'active_record' require 'json' def active_finite sym anon = Class.new ActiveRecord::Base Object.const_set(sym.to_s.singularize.capitalize, anon) end def create_finite args modify_finite args do |vs, klass, column_name| vs.each do |v| obj = klass.new obj.send column_name.to_s + '=', v obj.save end end end def drop_finite args modify_finite args do |vs, klass, column_name| vs.each do |v| objs = klass.where column_name => v objs.each do |o| klass.destroy o end 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 .' end file_name = args[:from_file] values = args[:values] column_name = args[:column_name] || :value if values.nil? and file_name.nil? raise 'Either :from_file or :values must be specified.' end to_be_modified = Array.new if not values.nil? to_be_modified = to_be_modified.concat values end if not file_name.nil? to_be_modified = to_be_modified.concat JSON.load open file_name end klass = active_finite table_name ActiveRecord::Base.transaction do yield to_be_modified, klass, column_name end end def default_column_name :value end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
active_finite-0.1.3 | lib/active_finite.rb |
active_finite-0.1.2 | lib/active_finite.rb |
active_finite-0.1.1 | lib/active_finite.rb |