首先是我目前的设置:
模型/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单表继承"。