#ruby-on-rails-3
#ruby-on-rails-3
Вопрос:
Сначала вот моя текущая настройка:
модели/user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
has_many :events
end
модели/event.rb
class Event < ActiveRecord::Base
belongs_to :user
end
Таким образом, это работает в том смысле, что у пользователя есть много событий, которые он / она может обрабатывать. Любой, кто не вошел в систему, может только просматривать и перечислять все события.
После этой первоначальной настройки у меня теперь есть другой набор пользователей, которые являются участниками, и текущие пользователи теперь фактически являются менеджерами событий, а не просто обычными пользователями. По сути, теперь у меня есть две модели, которые оба являются пользователями (поскольку они могут как входить в систему / регистрироваться, так и иметь одинаковые поля), и я подумал, что это событие должно выглядеть примерно так:
модели/event.rb
class Event < ActiveRecord::Base
belongs_to :manager
has_many :attendees, :through => :attendance # attendance is a join model
end
но я не хочу создавать отдельную таблицу для менеджеров и посетителей, и я подумывал о подклассе пользовательской модели, но я не совсем уверен в том, как это сделать. Я изучал параметры :as
и :polymorphic
в AR, но я все еще не совсем уверен, как это сделать. Помогите?
Ответ №1:
То, что вы ищете, называется наследованием одной таблицы. Вот один ресурс по этому вопросу. Их гораздо больше. Просто найдите в Google «Rails Single Table Inheritance».