Ruby on rails Ruby模型,我应该选择继承还是仅仅选择关联
我有以下表格和字段Ruby on rails Ruby模型,我应该选择继承还是仅仅选择关联,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有以下表格和字段 User :username,:password,:email Organiser :organiser_specific_fields Participant :participant_specific_fields 机构和参与者都是用户 系统中已存在用户 当一个用户组织一个聚会时,我创建了Party类的一个实例,将他添加为该聚会的组织者,并将其他用户添加为参与者 如何在Rails中对此进行建模?考虑到系统中已经存在用户,我无法找出在Rails中实现这一
User :username,:password,:email
Organiser :organiser_specific_fields
Participant :participant_specific_fields
机构和参与者都是用户
系统中已存在用户
当一个用户组织一个聚会时,我创建了Party类的一个实例,将他添加为该聚会的组织者,并将其他用户添加为参与者
如何在Rails中对此进行建模?考虑到系统中已经存在用户,我无法找出在Rails中实现这一点的最佳方法。取决于每个字段的具体数量以及用户表使用这些附加字段时的外观。如果组织者和参与者在数据库中不是独立的实体,他们可能只是混血
但总的来说,肯定是继承IMHO 根据您的评论,我建议您坚持以下模式:
此代码未经测试,可能需要对名称进行一些调整:
class User < ActiveRecord::Base
has_many :parties, :through => :participations, :source => :user
has_many :organised, :through => :organises, :source => :user
end
class Party < ActiveRecord::Base
has_many :participants, :through => :participations
has_many :organizers, :through => :organises
end
class Participation < ActiveRecord::Base
belongs_to :user
belongs_to :party
# this class represents "a user is going to a party"
# additional fields, which are specific to a participation go here as well
end
class Organises < ActiveRecord::Base
belongs_to :user
belongs_to :party
# This class represents "user is the organisator of a party"
# additional fields, which are specific to organizing a party go here
end
class用户:participations,:source=>:user
有许多:有组织的,:通过=>:有组织的,:来源=>:用户
结束
类Party:参与者
有许多:组织者,:通过=>:组织者
结束
课堂参与
优点:
- 您不需要触摸用户表
- 一个政党可以有两个或两个以上的组织者
- 该党的组织者也可以参加该党(希望如此)
- 数据库中没有重复数据
- 你必须自己管理这些协会:用户不得两次去同一个聚会(或成为组织者)
我希望这有助于把事情弄清楚一点。更多信息可在此rails文档中找到。它们将为组织者和参与者提供两个特定字段。如果我需要使用STInheritance,你能将我链接到一个好的页面来了解它吗:-)这个页面很好。只需查找“单表继承”。。嗯!主办方和参与者的特定字段是否与给定的派对相关?(例如,“参与(是/否)”、“带来松饼”、“制作烧烤酱”)是的,作为一方组织者的用户也可以是另一方的参与者