# Converting STI objects

**URL:** <https://www.ruby-forum.com/t/converting-sti-objects/103155>\
**Category:** Rails\
**Created:** [May 2, 2007, 1:51pm UTC](https://www.ruby-forum.com/t/converting-sti-objects/103155 "2007-05-02T13:51:32Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jetienne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d2c977/32.png) [@jetienne](https://www.ruby-forum.com/u/jetienne)\
**Post date:** [May 2, 2007, 1:51pm UTC](https://www.ruby-forum.com/t/converting-sti-objects/103155/1 "2007-05-02T13:51:32Z")

</div>

Hi,

Check the following data model:  
class BaseClass \< ActiveRecord::Base; end  
class Class1 \< BaseClass; end  
class Class2 \< BaseClass; end

For some reasons, I would like to “convert” a Class1 object to a Class2  
object.  
Creating a new Class2 object from Class1 object is not a solution, since  
Class1 object is associated to lots of objects and I do not want to  
recreate the associations.

obj = BaseClass.find()  
=\> how to cast obj from Class1 to Class2

Thank you!  
Jean-Etienne

---

<div class="post-metadata">

**Author:** ![jetienne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d2c977/32.png) [@jetienne](https://www.ruby-forum.com/u/jetienne)\
**Post date:** [May 2, 2007, 2:16pm UTC](https://www.ruby-forum.com/t/converting-sti-objects/103155/2 "2007-05-02T14:16:23Z")

</div>

One way is to manually set the type column:

obj[:type] = Class2  
obj.save

Chris

On May 2, 12:51 pm, Jean-Etienne D. \<rails-mailing-l…@andreas-

---

<div class="post-metadata">

**Author:** ![jetienne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d2c977/32.png) [@jetienne](https://www.ruby-forum.com/u/jetienne)\
**Post date:** [May 6, 2007, 7:58pm UTC](https://www.ruby-forum.com/t/converting-sti-objects/103155/3 "2007-05-06T19:58:01Z")

</div>

You might need to use update\_attribute to avoid validation checking on  
save…

BaseClass.find().update\_attribute(:type, Class1)
