Rails:这是单表继承(STI)的用例吗?

CSI

考虑此设置。请理解,我们的设置更加详细,但这是一个简单的示例。

competitionname这是一年一度的比赛。
competition_instances其中有locationstarts_at
每个比赛都有sports哪个name

范例:
competitionname:“超级碗”competition_instances每年都有不同,但sport保持不变。
相反,competitionname“奥运”有不同competition_instances,不同sports在每个competition_instance

最好创建competition_sports并将competition_instance_sportscompetition_instance_sports作为的子类competition_sports吗?

目标:使用competition_instance_sports记录(如果存在),否则使用competition_sports记录。在我们的真实应用中,每个比赛/比赛实例可以拥有20-50个运动记录。我们如何才能最好地实现?

我只是在考虑这样一种情况:有些标准体育总是在奥运会中出现,而有些又在增加,例如东道国提出的那些。

我会“相反的方式”使用多态关联

class Competition < ActiveRecord::Base
  has_many :competition_instances
  has_many :competition_sports, as: :event
end

class CompetitionInstance < ActiveRecord::Base
  belongs_to :competition
  has_many :competition_sports, as: :event

  def events_array  # neater by sacrificing ActiveRecord methods
    competition.competition_sports + competition_sports
  end

  def events        # messier, returns ActiveRecord relationship
    CompetitionSport.where( " ( event_id = ? AND event_type = 'Competition' ) OR
                              ( event_id = ? AND event_type = 'CompetitionInstance')", competition_id, id )
  end
end

class Sport < ActiveRecord::Base
  has_many :events, as: :competition_sport
end

class CompetitionSport < ActiveRecord::Base
  belongs_to :sport
  belongs_to :event, polymorphic: true
end

这允许:

competition.competition_sports            # standard sports
competition_instance.competition_sports   # only those specific for this instance
competition_instance.events               # includes sports from both

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这是单例的滥用吗?

来自分类Dev

这是单例模式吗

来自分类Dev

无效的单表继承类型:尝试在Rails 4中设置STI子类时出错

来自分类Dev

单表继承(STI)父ActiveRecord .subclasses .descendants返回空

来自分类Dev

具有ManyToOne关系的单表继承(STI)

来自分类Dev

Rails单表继承关系

来自分类Dev

我应该如何在Rails 4.0中使用单表继承(STI)来处理“有很多通过”关系

来自分类Dev

Rails 4 STI继承

来自分类Dev

Rails:无效的单表继承类型错误

来自分类Dev

rails-多态关联或单表继承

来自分类Dev

Rails单表继承ActiveRecord :: SubclassNotFound

来自分类Dev

Javascript单例继承

来自分类Dev

继承单例

来自分类Dev

使用单表继承时,Doctrine无法生成模式吗?

来自分类Dev

单表继承替代

来自分类Dev

这是Java中AtomicReference的正确用例吗?

来自分类Dev

迁移到单表继承时,Rails 4更新类型

来自分类Dev

Rails单表继承模型中的覆盖验证

来自分类Dev

Rails和Devise选项中的单表继承

来自分类Dev

rails has_many多个单表继承

来自分类Dev

Rails单表继承模型中的覆盖验证

来自分类Dev

这是 Java 线程安全(和 GC 安全)中的弱单例实现吗?

来自分类Dev

这是对继承而非继承的适当使用吗?

来自分类Dev

这是对继承而非继承的适当使用吗?

来自分类Dev

单表继承还是多态?

来自分类Dev

JMSSerializerBundle和单表继承

来自分类Dev

多重继承和单例设计模式

来自分类Dev

这是Deferred的好用例吗?

来自分类Dev

Angularjs服务是单例吗?