Method: ActiveRecord::Persistence#becomes!

Defined in:
activerecord/lib/active_record/persistence.rb

#becomes!(klass) ⇒ Object

Wrapper around #becomes that also changes the instance’s STI column value. This is especially useful if you want to persist the changed class in your database.

Note: The old instance’s STI column value will be changed too, as both objects share the same set of attributes.



510
511
512
513
514
515
516
517
518
# File 'activerecord/lib/active_record/persistence.rb', line 510

def becomes!(klass)
  became = becomes(klass)
  sti_type = nil
  if !klass.descends_from_active_record?
    sti_type = klass.sti_name
  end
  became.public_send("#{klass.inheritance_column}=", sti_type)
  became
end