我想弄清楚模型之间的复杂关系。 我有一个名为“概念”的模型,它有两种继承类型,称为“技能”和“职业”。基本上,这意味着每个概念都代表一个类别,但是当深入到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