我想弄清楚模型之間的複雜關係。 我有一個名爲「概念」的模型,它有兩種繼承類型,稱爲「技能」和「職業」。基本上,這意味着每個概念都代表一個類別,但是當深入到hierychal樹中時,概念也可以是技能或職業。has_many孩子和has_many父母
我正在通過使用STI來解決這個問題。所以,我的概念表模式是這樣的:
class CreateConcepts < ActiveRecord::Migration
def self.up
create_table :concepts do |t|
t.string :uri, :null => false, :length => 255
t.string :type, :null => true, :length => 255
t.integer :isco_code, :null => true
t.timestamps
end
end
def self.down
drop_table :concepts
end
end
類型列determins概念是否是一個真正的「概念」或「技能」 /「職業」。 現在的問題但是以下關係:
編輯:
- 一個概念可以屬於單親概念
- 一個職業可以屬於單親概念
- 一技能可以屬於多個父母概念
- 技能沒有孩子
- 的職業有沒有孩子
所以basicly你有這樣的事情:
> concept1
> concept2 concept3
> concept4 concept5 concept6 concept7 skill1
> occup1 skill2 occup2 skill5
> occup7 skill2 occup3 skill4
> occup4 skill1 occup8
我希望畫面有點不清楚是什麼,我試圖解釋。 目前我已經創建了以下遷移來嘗試解決的父子關係,但我不知道如何與關聯都這樣......
class CreateConceptLinks < ActiveRecord::Migration
def self.up
create_table :concept_links do |t|
t.integer :parent_id, :null => false
t.integer :child_id, :null => false
t.timestamps
end
end
def self.down
drop_table :concept_links
end
end
我想直到結束是以下posssibilities:
concepta.parents => a Concept object
conceptb.children => an array of Conept objects
Occupation.parents => a Concept object
Occupation.children => []
Skill.parents => an array of Concept objects
Skill.children => []
希望這甚至有可能...
我可以自己實現它使用類的自定義屬性,但我希望如果協會可以解決它 – 2011-05-20 09:31:58