class Temping::ModelFactory
Constants
- DEFAULT_OPTIONS
Public Class Methods
new(model_name, options = {}, &block)
click to toggle source
# File lib/temping.rb, line 34 def initialize(model_name, options = {}, &block) @model_name = model_name @options = options klass.class_eval(&block) if block_given? klass.reset_column_information end
Public Instance Methods
klass()
click to toggle source
# File lib/temping.rb, line 41 def klass @klass ||= Object.const_get(@model_name) rescue NameError @klass = build end
Private Instance Methods
add_methods()
click to toggle source
# File lib/temping.rb, line 72 def add_methods class << klass def with_columns connection.change_table(table_name) do |table| yield(table) end end def table_exists? true end end end
build()
click to toggle source
# File lib/temping.rb, line 49 def build Class.new(@options.fetch(:parent_class, default_parent_class)).tap do |klass| Object.const_set(@model_name, klass) klass.primary_key = @options[:primary_key] || :id create_table(@options) add_methods end end
connection()
click to toggle source
# File lib/temping.rb, line 86 def connection klass.connection end
create_table(options = {})
click to toggle source
# File lib/temping.rb, line 68 def create_table(options = {}) connection.create_table(table_name, DEFAULT_OPTIONS.merge(options)) end
default_parent_class()
click to toggle source
# File lib/temping.rb, line 59 def default_parent_class if ActiveRecord::VERSION::MAJOR > 4 && defined?(ApplicationRecord) ApplicationRecord else ActiveRecord::Base end end
table_name()
click to toggle source
# File lib/temping.rb, line 90 def table_name klass.table_name end