Rails抽象类has_many

时间:2012-08-11 07:55:09

标签: ruby-on-rails inheritance polymorphism abstract-class polymorphic-associations

正如标题所暗示的那样,这没有任何意义。想象一下这个场景:

我有以下模型:GameGameTypeChampion。我希望只有某个GameType(如MOBA)的游戏才能与has_many模型建立Champion关系;其他人(如FPS等)不会。

我的第一个倾向是创建一个GameTypeMoba抽象类,其中从它继承的所有类都可以具有它的一些属性(例如拥有冠军)。但是,我知道这没有意义,因为没有绑定到表的类不能有表关系。此外,如果我能以某种方式将它一起破解,它看起来就像是一个糟糕的WET(与DRY​​相反)的方法。

我希望有人有一个简单的解决方案,不会涉及凌乱的应用逻辑。虽然我也接受"延迟,但去睡觉"在这一点上也是如此。

2 个答案:

答案 0 :(得分:0)

检查Rails指南“has_many”关联引用(http://guides.rubyonrails.org/association_basics.html#has_many-association-reference),您可以在关联声明中使用condition选项。文档中提供的示例:

class Customer < ActiveRecord::Base
  has_many :confirmed_orders, :class_name => "Order",
    :conditions => "confirmed = 1"
end

在您的情况下,我假设您希望使用:classType of“GameType”:conditions =&gt; “MOBA =”。

答案 1 :(得分:0)

Mischa是对的,在这种情况下,似乎没有什么比这更好/更干净的了。并且对于记录子集具有不需要的关系并不是什么大不了的事。