| 2008-10-18 12:31:54 | Ответить |
|---|---|
|
Михаил Гаганов Адрес: Украина. Крым. Севастополь Сообщений: 17 Регистр: 2007-12-05 его блог 0 сообщ. |
Сущности с разными подкатегориями в одну модель |
|
Здравствуйте!
Посоветуйте как избавиться от создания модели для каждого курса. Структура и проблема описаны ниже: Есть школы, где проводятся курсы: школа 1 школа 2 школы 3 Есть языковые курсы: Академические Семейные и т.д. У курсов есть подкатегории (но не у всех): Например, для Академических подкатегории "учителя", "студенты" и т.д. для Семейных нет подкатегорий. И соответственно у курсов (или при наличии подкатегорий курсов, то у подкатегорий) есть школы, в которых проводят соответствующие курсы. Причём в одной школе могут проводиться несколько курсов (получается отношение многие-ко-многим) Придумал только вариант с созданием модели для каждого курса (AcademicCourse, FamilyCourse), эти модели связаны с их подкатегориями, если есть (например, для AcademicCourse, has_many :student_types ), а подкатегории (или сразу курсы, у которых нет подкатегорий) связаны с полиморфной моделью-связкой SchoolCources (у которой belongs_to :teachable, :polymorphic => true и belongs_to :school) Так вот, как можно обойти создание модели для каждого курса? Проблема в том, что у каждого курса могут быть подкатегории, а могут и не быть. А школы должны быть привязаны либо к курсам, либо к категориям, причём иногда сразу к нескольким. |
|
| activerecord |
| 2008-10-18 13:48:19 | Ответить |
|---|---|
|
Roman V. Babenko Адрес: Kyiv Сообщений: 311 Регистр: 2008-04-22 его блог 6 сообщ. |
RE: Сущности с разными подкатегориями в одну модель |
|
Не совем понятно, что значит подкатегории академических курсов: учетеля, студенты.
------------
По какому признаку курс делиться на плдкатегории ? http://romanvbabenko.blogspot.com
Если в споре не родилась истина, то, по крайней мере, один из спорящих бесплоден.
|
|
| 2008-10-18 14:35:29 | Ответить |
|---|---|
|
Михаил Гаганов Адрес: Украина. Крым. Севастополь Сообщений: 17 Регистр: 2007-12-05 его блог 0 сообщ. |
RE: RE: Сущности с разными подкатегориями в одну модель |
|
Курс может делиться по категориям только по индивидуальному признаку. Т.е., к примеру, у Академического курса могут быть подкатегории, а у Семейного курса может их не быть.
Если брать вариант когда каждый курс представляется отдельной моделью, то получается для академических курсов и для семейных курсов следующее: class AcademicCourse < ActiveRecord::Base has_many :student_types end class StudentType < ActiveRecord::Base belongs_to :academic_course has_many :school_cources, :as => :teachable end class FamilyCourse < ActiveRecord::Base has_many :school_cources, :as => :teachable end class SchoolCource < ActiveRecord::Base belongs_to :teachable, :polymorphic => true belongs_to :school end class School < ActiveRecord::Base has_many :school_cources end |
|
| 2008-10-18 14:48:23 | Ответить |
|---|---|
|
Roman V. Babenko Адрес: Kyiv Сообщений: 311 Регистр: 2008-04-22 его блог 6 сообщ. |
RE: RE: RE: Сущности с разными подкатегориями в одну модель |
|
Чем тебя не устроил вариант построить древовидную иерархию курсов и их категорий и связать has_many со школами через промежуточную таблицу.
------------
Зачем вообще начал плодить модели курсов ? http://romanvbabenko.blogspot.com
Если в споре не родилась истина, то, по крайней мере, один из спорящих бесплоден.
|
|
| 2008-10-18 17:03:04 | Ответить |
|---|---|
|
Михаил Гаганов Адрес: Украина. Крым. Севастополь Сообщений: 17 Регистр: 2007-12-05 его блог 0 сообщ. |
RE: RE: RE: RE: Сущности с разными подкатегориями в одну модель |
|
Верно, сделаю древовидной.
Совершенно забыл о дереве, не подумал о том, что категории можно сделать "детьми" курса-"родителя". Дерево буду строить плагином BetterNestedSet. Хотя, конечно, дерево - штука прожорливая на обновлениях в плане загрузки базы, но в моём случае это не критично. А идея плодить модели курсов появилась от того, что подкатегории не у всех курсов и, соответственно, хотел их(категории) делать тоже отдельными моделями. Спасибо! |
|
| 2008-10-18 18:52:23 | Ответить |
|---|---|
|
Roman V. Babenko Адрес: Kyiv Сообщений: 311 Регистр: 2008-04-22 его блог 6 сообщ. |
RE: RE: RE: RE: RE: Сущности с разными подкатегориями в одну модель |
|
Плодить модели есть смысл если их функиционал сильно отличается. В таком случае можно использовать STI(по ситуации если есть общий функционал), но тоже надо смотреть, чтобы не получить жесткую структуру с кучей полей.
------------
Думаю, что acts_as_tree тебе вполне хватит. Дерево не прогрузит тебе сильно базу, потому как своих чаилдов грузит только по надобности(Lazy - ленивая загрузка). http://romanvbabenko.blogspot.com
Если в споре не родилась истина, то, по крайней мере, один из спорящих бесплоден.
|
|