1

正如标题所示,这没有任何意义。想象一下场景:Rails抽象类has_many

我有以下型号:GameGameTypeChampion。我只想要某个GameType(如MOBA)的游戏与Champion模型有has_many的关系;其他人(如FPS等)不会。

我的第一个倾向是创建一个抽象类,其中从它继承的所有类都可以具有其某些属性(例如拥有冠军)。然而,我知道这是没有意义的,因为不绑定到表的类不能有表关系。此外,如果我能以某种方式将它们拼凑在一起,它就好像是一个低劣的,湿的(与DRY​​相反)的方法。

我希望有人有一个简单的解决方案,涉及凌乱的应用逻辑。尽管在这一点上我也接受“延缓,上床睡觉”。

+0

为什么当'GameType'是'MOBA'时不能忽略'has_many'? – Mischa 2012-08-11 08:01:34

+0

是的,这是一个解决方案,我希望有人指出我的架构/设计有缺陷。 – anxiety 2012-08-11 08:08:04

+1

好吧,让我这样说吧:你的架构/设计中的缺陷是你正在尝试架构一些不需要架构的东西。 – Mischa 2012-08-11 11:48:19

回答

0

Mischa是对的,在这种情况下,它似乎并没有什么更好/更清洁的工作。对于一部分记录而言,不必要的关系并不是什么大不了的事情。

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 

在你的情况,我想你会想使用的:条件=>“MOBA =”:“游戏类型”与CLASS_NAME。

+0

我认为你正在进行某些工作,但我认为':class_name'参数期望在':conditions'参数中包含字段的类。 – anxiety 2012-08-11 08:15:58

+0

同意,所以:class Customer “Order”, :conditions =>“confirmed = 1” end – kries 2012-08-11 08:19:08

+0

是的。因此,像'has_many:champions,:class_name =>“GameType”,:conditions =>“name = MOBA”'这样的操作会将':conditions'与':class_name'对齐,但不会包含'Champion'模型我不认为。 – anxiety 2012-08-11 08:23:06