Например, есть система статистики. Состоит из таких моделей:
- Регион (Region)
- Сфера деятельности (Job). Например: производство, торговля, услуги и т.д.
- Уточнение вида деятельности (JobItem). Например, если речь идет о услугах: рекламные, перевозки, ремонты и т.д.
- Конкретная статистическая единица (Company). Например, конкретное предприятие.
Напрашиваются следующие зависимости: Job - JobItem все понятно - has_many/belongs_to
А дальше не все понятно.
Набор Job/JobItem может присутствовать в любом регионе и от региона к региону не меняется. Т.е. has_many/belongs_to между Region и Job смысла нет устанавливать. Company, в свою очередь, напрямую зависит, с одной стороны от Region(может принадлежать только одному региону), с другой стороны также напрямую принадлежит только одному JobItem (например главный вид деятельности)
Естественно, хотелось бы потом применять различные фильтры. Например:
- Предприятия, оказывающие рекламные услуги во всех регионах
- Предприятия, оказывающие рекламные услуги в определенном регионе
- Все предприятия в определенном регионе
- Все предприятия в определенном регионе, которые занимаются торговлей
и т. д.
Можно, конечно, обойтись вообще без ассоциаций, но хотелось бы гибкости, чтобы не загромождать код на каждое условие кучей цепочек запросов. Возможно можно по уму настроить ассоциации?
Я особо не вижу смысла (в рамках этой задачи) привязывать регионы к видам деятельности, хотя в принципе компания может работать, как связь, т.к. там будут ссылки на вид деятельности, и на регион.