Вы можете использовать Single Table Inheritance
, чего можно достичь, создав подклассы модели.
Создание модели Profile
со столбцом type:string
( Имя может быть переопределено ):
$ rails g model Profile type:string
Теперь в profile.rb
создайте подкласс для вашей модели:
class Profile < ActiveRecord::Base
# Common profile attributes
end
class Artist < Profile
# Things specific to an artist profile
end
class Listener < Profile
# Things specific to a listener profile
end
Когда вы создадите Artist
или Listener
, он будет сохранен втаблица profiles
вместе с типом профиля.
Например, если вы сделаете Artist.create
, он будет сохранен в таблице profiles
с type='Artist'
.
Когда вы извлекаете запись, она будет возвращена в соответствующей модели, будь то Artist
, Listener
или универсальный Profile
.
Для получения дополнительной информации об этой технике, посмотрите на этот вопрос .
Этот пост в блоге также хорошо объясняет его.