Sha256: b06052ed3d7bdb60773b6146ce9f443e68c8b837d5ed35a545571a0e7133b6f2
Contents?: true
Size: 1.24 KB
Versions: 3
Compression:
Stored size: 1.24 KB
Contents
# This is based on Remarkable based on Shoulda model builder for Test::Unit. # module ModelBuilder def create_table(table_name, &block) connection = ActiveRecord::Base.connection connection.execute("DROP TABLE IF EXISTS #{table_name}") connection.create_table(table_name, &block) @created_tables ||= [] @created_tables << table_name connection end def define_constant(class_name, base, &block) class_name = class_name.to_s.camelize klass = Class.new(base) Object.const_set(class_name, klass) klass.class_eval(&block) if block_given? @defined_constants ||= [] @defined_constants << class_name klass end def define_model_class(class_name, &block) define_constant(class_name, ActiveRecord::Base, &block) end def define_model(name, columns = {}, &block) class_name = name.to_s.pluralize.classify table_name = class_name.tableize table = columns.delete(:table) || lambda {|table| columns.each do |name, type| table.column name, *type end } create_table(table_name, &table) klass = define_model_class(class_name, &block) instance = klass.new self.class.subject { instance } if self.class.respond_to?(:subject) instance end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
acts_as_decimal-1.1.1 | spec/model_builder.rb |
acts_as_decimal-1.1.0 | spec/model_builder.rb |
acts_as_decimal-1.0.6 | spec/model_builder.rb |