class ActiveMusicbrainz::Model::Factory
Public Class Methods
define(&block)
click to toggle source
# File lib/active_musicbrainz/models/factory.rb, line 4 def self.define &block factory = new factory.instance_eval &block if block_given? factory end
Public Instance Methods
model(table_name, &block)
click to toggle source
# File lib/active_musicbrainz/models/factory.rb, line 10 def model table_name, &block klass = model_class table_name klass.class_eval &block if block_given? klass end
Private Instance Methods
build_model_class(table_name)
click to toggle source
# File lib/active_musicbrainz/models/factory.rb, line 30 def build_model_class table_name klass = Class.new ActiveRecord::Base do self.table_name = table_name self.inheritance_column = :_sti_type include Base end Model.const_set camelize_table_name(table_name), klass end
camelize_table_name(term, uppercase_first_letter = true)
click to toggle source
# File lib/active_musicbrainz/models/factory.rb, line 18 def camelize_table_name(term, uppercase_first_letter = true) string = term.to_s string = string.sub(/^[a-z\d]*/) { $&.capitalize } string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{$2.capitalize}" }.gsub('/', '::') end
model_class(table_name)
click to toggle source
# File lib/active_musicbrainz/models/factory.rb, line 24 def model_class table_name Model.const_get camelize_table_name(table_name) rescue NameError build_model_class table_name end