2013-07-16 3 views
0

Может кто-нибудь объяснить, как данные хранятся в полиморфной ассоциации.Полиморфное хранение данных ассоциации

например, если у меня есть комментарии, случаи, таблица шагов случая. Комментарии таблица ссылка:

belongs_to :user, class_name: 'User', foreign_key: 'user_id' 
    belongs_to :commentable, polymorphic: true, counter_cache: true 

Случаи таблица ссылка:

has_many :comments, as: :commentable, dependent: :destroy 

Дело шаги таблицы, как:

belongs_to :case, class_name: 'Case', foreign_key: 'case_id' 
    has_many :comments, as: :commentable, dependent: :destroy 

Goen через ссылки формы рельсам бросает и многие другие ссылки. .. Но не получить ясного понимания.

ответ

0

комментариев будут как

id | user_id | commentable_type | commentable_id | value 
-------------------------------------------------- 
1 | 1  | Case    | 1    | fdsfdsfsdf 
2 | 1  | CaseStep   | 1    | dasdfs 

случаи таблица будет как

id | case_name 
-------------- 
1 | abc 

case_steps таблица будет как

id | case_step_name | case_id 
------------------------------- 
1 | abc   | 1 

В замечании таблицы, колонок commentable_type будет хранить имя класса к которому он связан с полиморфизмом, и commentable_id является идентификатором записи класса (ta BLE). В приведенном выше случае это может быть «Case» или «CaseStep»

Смежные вопросы