Module: ActsAsSavable::ClassMethods

Defined in:
lib/acts-as-savable.rb

Instance Method Summary collapse

Instance Method Details

#saves_to(table_name, *attrs) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/acts-as-savable.rb', line 7

def saves_to(table_name, *attrs)
  class_eval do
    def save(*args)
      _acts_as_savable_object.save(*args)
    end

    def save!(*args)
      _acts_as_savable_object.save!(*args)
    end

    private

    define_method :_acts_as_savable_object do
      klass = Class.new(ActiveRecord::Base) { self.table_name = table_name }
      instance = id ? klass.find(id) : klass.new
      attrs.each {|attr| instance.send("#{attr}=", send(attr))}
      instance
    end
  end
end