Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby模型,我应该选择继承还是仅仅选择关联_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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

根据您的评论,我建议您坚持以下模式:

  • 用户表,保存有关用户的所有详细信息(firstname、lastname)
  • 包含一个聚会的所有详细信息(时间、地点等)的聚会表
  • 以下列出的模型的两个联接表:

  • 此代码未经测试,可能需要对名称进行一些调整:

    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,你能将我链接到一个好的页面来了解它吗:-)这个页面很好。只需查找“单表继承”。。嗯!主办方和参与者的特定字段是否与给定的派对相关?(例如,“参与(是/否)”、“带来松饼”、“制作烧烤酱”)是的,作为一方组织者的用户也可以是另一方的参与者