Converting class or type under single table inheritance

I think this query is more Ruby than Rails but I'm writing a Rails app
using single table inheritance

class User < ActiveRecord::Base
end

class AdminUser < User
end

The type column in the users table holds the class name for each
instance

Now I want to convert a User object into an AdminUser. Is this
possible? Does anyone know the best way to do this?

Thanks in advance
levent

···

--
Posted via http://www.ruby-forum.com/.

user[:type] = AdminUser

···

On 5/22/06, Levent Ali <lebreeze@gmail.com> wrote:

I think this query is more Ruby than Rails but I'm writing a Rails app
using single table inheritance

class User < ActiveRecord::Base
end

class AdminUser < User
end

The type column in the users table holds the class name for each
instance

Now I want to convert a User object into an AdminUser. Is this
possible? Does anyone know the best way to do this?

Thanks in advance
levent

--
Posted via http://www.ruby-forum.com/\.

Joey wrote:

user[:type] = AdminUser

that doesn't seem to work.. that throws "TypeError: can't dump anonymous
class Class"

I've already tried stuff like:
@user = User.find(1) # an object of type User not AdminUser
@user.type = AdminUser
@user.save # Throws the same error as above

@user[:type] = AdminUser
@user.save # Throws the same error

···

--
Posted via http://www.ruby-forum.com/\.

} Joey wrote:
} > user[:type] = AdminUser
}
} that doesn't seem to work.. that throws "TypeError: can't dump anonymous
} class Class"
}
} I've already tried stuff like:
} @user = User.find(1) # an object of type User not AdminUser
} @user.type = AdminUser
} @user.save # Throws the same error as above
}
} @user[:type] = AdminUser
} @user.save # Throws the same error

You can't set it to the class, you need to set it to the name. It's a
subtlety:

user[:type] = 'AdminUser'

--Greg

···

On Mon, May 22, 2006 at 06:43:31PM +0900, Levent Ali wrote:

Gregory Seidman wrote:

···

On Mon, May 22, 2006 at 06:43:31PM +0900, Levent Ali wrote:
} Joey wrote:
} > user[:type] = AdminUser
}
} that doesn't seem to work.. that throws "TypeError: can't dump
anonymous
} class Class"
}
} I've already tried stuff like:
} @user = User.find(1) # an object of type User not AdminUser
} @user.type = AdminUser
} @user.save # Throws the same error as above
}
} @user[:type] = AdminUser
} @user.save # Throws the same error

You can't set it to the class, you need to set it to the name. It's a
subtlety:

user[:type] = 'AdminUser'

--Greg

I'm an idiot :slight_smile:

Thanks.. I can't believe I didn't think of that.. that's what happens
when you spend hours on a simple thing, over thinking the problem..
thanks again

levent

--
Posted via http://www.ruby-forum.com/\.