Ваша лучшая ставка - это, вероятно, один пользователь на множество проектов, тогда имейте «расширенную информацию», которая полиморфно связана. Я думаю, что пример описал бы лучше, чем это предложение.
class User < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
belongs_to :user
has_one :project_type, :as => :type
end
class ProjectType < ActiveRecord::Base
belongs_to :type, :polymorphic => true
end
class WebApplication < ProjectType
# fields here
end
class DesktopApplication < ProjectType
# fields here
end
@project.type = WebApplication.new
@otherproject.type = DesktopApplication.new
К сожалению, я не могу проверить это, чтобы гарантировать, что это работает, но я думаю, что я все понял правильно:)