如何将用户划分为管理者和与会者



首先是我目前的设置:

模型/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参数,但我仍然不太确定如何做到这一点。帮助吗?

您要查找的是单表继承。这里有一个关于这个主题的资源。还有更多。只要谷歌"Rails单表继承"。

最新更新