2011-05-03 30 views
1

我正在使用Ruby on Rails 3,並且我有一個班級List和其他一些以「非常規方式」「構成」List的子類。也就是說,我有一個List模型具有以下屬性:以「不尋常的方式」管理班級的關聯模型

# LIST ATTRIBUTES 
id  : integer 
kind_of : string 
class_id : integer 

kind_of值可以是「學校」,「房子」,......併爲每個kind_of我有一個類ListSchoolListHouse,... class_id是指子類kind_of「學校」,「房子」,...(所以我可以有多個相同的值爲class_id但每個指的是一個特定的類ListSchool,ListHouse,...取決於值kind_of)。

在幾句話,我想是指一類獨特的(類List爲了達到所有種類的子類ListSchoolListHouse ...)基礎上的屬性值的母類(類Listkind_of)。

我怎麼能寫的關聯代碼,以這些模型關聯(可能使用:conditions => "kind_of = 'school'":conditions => "kind_of = 'house'",...在關聯聲明has_one?你對「分班」這種方法有什麼建議?

+0

我假設你正在使用rails 2?你能否展示這種數據佈局的目的?你想要什麼樣的查詢來精確運行?例如,ListSchool和ListHouse之間的區別是什麼? – moritz 2011-05-03 13:47:13

回答

0

這聽起來非常像您正在尋找單表繼承(STI)。 Rails支持開箱即用;您只需要在List類中定義一個type列,然後從List繼承ListSchoolListHouse。 STI不需要kind_ofclass_id列。

「rails sti」的網頁搜索可以找到一些很好的資源,包括this StackOverflow question