Module: ActsAsFu

Defined in:
lib/acts_as_fu/base.rb

Defined Under Namespace

Classes: Connection

Instance Method Summary collapse

Instance Method Details

#build_model(name, options = {}, &block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/acts_as_fu/base.rb', line 22

def build_model(name, options={}, &block)
  connect! unless connected?

  klass_name  = name.to_s.classify
  super_class = options[:superclass] || ActsAsFu::Connection
  contained   = options[:contained]  || Object

  begin
    old_klass = contained.const_get(klass_name)
    old_klass.reset_column_information if old_klass.respond_to?(:reset_column_information)
  rescue
  end

  contained.send(:remove_const, klass_name) rescue nil
  klass = Class.new(super_class)
  contained.const_set(klass_name, klass)

  # table_name isn't available until after the class is created.
  if super_class == ActsAsFu::Connection
    ActsAsFu::Connection.connection.create_table(klass.table_name, :force => true) { }
  end

  model_eval(klass, &block)
  klass
end