Я пытаюсь выяснить сложную связь между моделью.У меня есть модель под названием «Концепция», которая имеет два наследуемых типа: «Умение» и «Занятие».По сути, это означает, что каждый концепт представляет категорию, но концепт также может быть навыком или занятием, если углубиться в древо иерархии.
Я решаю эту иерархию, используя STI.Таким образом, моя схема для таблицы Concepts выглядит следующим образом:
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
Столбец типа определяет, является ли Концепция реальной «Концепцией» или «Умением» / «Занятием».Проблема теперь, однако, следующие отношения:
РЕДАКТИРОВАТЬ:
- Концепция может принадлежать к одному родительскому понятию
- AnПрофессия может принадлежать одному родителю. Концепция
- Навык может принадлежать нескольким родителям. Концепции
- У навыка нет детей
- В профессии нет детей
так что в принципе у вас будет что-то вроде этого:
> 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
Что я хочу закончить, так этоследующие возможности:
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 => []
Надеюсь, что это даже возможно ...