如何将用户分解为经理和与会者?

时间:2011-10-25 10:38:20

标签: 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

因此,这在某种意义上起作用,即用户可以使用CRUD进行许多事件。任何未登录的人只能查看和列出所有事件。

从这个初始设置开始,我现在有另一组用户是与会者,现在的用户现在实际上是事件管理员,而不仅仅是普通用户。从本质上讲,我现在有两个模型都是用户(因为他们都可以登录/注册并具有相同的字段)我认为该事件应该是这样的:

模型/ event.rb

class Event < ActiveRecord::Base
  belongs_to :manager
  has_many :attendees, :through => :attendance # attendance is a join model
end

但我不想为管理人员和与会者创建一个单独的表格,我正在考虑对用户模型进行子类化,但我不太清楚如何去做。我正在研究AR中的:as:polymorphic参数,但我仍然不太清楚如何做到这一点。帮助

1 个答案:

答案 0 :(得分:0)

您要查找的内容称为单表继承Here is one resource on the subject。还有更多。只需google for "Rails Single Table Inheritance"