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