Я хочу создать полиморфный класс (Пользователь) как определенный тип и использовать его позже с условиями, зависящими от типа объекта.
class SuperUser < User
class Admin < User
class User
@user = @account.users.new(params[:user])
Это создаст пользователя как пользовательский объект. Единственный способ создать и использовать @user как объект определенного типа - это сделать что-то вроде этого:
@user = Admin.new(params[:user]) if params[:user][:type] == "Admin"
@user = SuperUser.new(params[:user]) if params[:user][:type] == "SuperUser"
@user.account = @account
if @user.is_a? Admin
...
end
....
Итак, есть ли лучший способ сделать это?