Let’s say I have two types of users, A and B. Users of type B have fewer privileges and less-strict validations on fields (more can be blank). Otherwise, they’re basically the same as type A. This fact makes me inclined to use single table inheritance.
Here’s my concern – type B users can upgrade to type A. When they upgrade, they should keep all their associated records. Is there an easy way to convert from one model type to another using STI such that all associations are preserved? Can you give a simple example?
All you need to do is make sure you have given the correct value in
typecolumn.While upgrading User B to User A, just change the value stored in
typeattribute to User A’sclass name.
Eg:
it will upgrade the part time staff to staff class.
All associations should be remain unchanged. Since you only have one actual sql table.
All the attributes for PartTimeStaff and Staff class are kept in the same table.
See more details from Rails API and Single Table Inheritance
thanks