Я создаю сайт — сообщество по аренде недвижимости, где основная функциональность сосредоточена на обсуждениях, привязанных к конкретным городам. У пользователей будут данные, указывающие города, в которых они разбираются, и их связь с этими городами (сейчас живут, раньше жили и т. д.). Также пользователи смогут подписываться на города, в которые хотят инвестировать, но в которых не разбираются. Все города будут представлены как категории, с пользовательским полем для хранения геокодированных данных, чтобы пользователи могли просматривать города на карте.
Меня немного беспокоит, как лучше структурировать это с точки зрения эффективности базы данных. Когда пользователь находится на странице города, я буду отображать ленту с «экспертами-участниками» этого города. Если мне придется при каждой отрисовке страницы категории выполнять запрос ко всем пользователям, перебирать их пользовательские поля и хеш «экспертных городов», это, по-моему, будет довольно медленно, особенно по мере роста числа пользователей и городов.
Если бы я разрабатывал это в собственном приложении на Rails, эта проблема легко решалась бы с помощью таблиц соединений и отношений has_many :through между моделями. Меня интересует, какой подход рекомендуется для плагина, которому нужна таблица соединений. Казалось бы, создание собственных миграций и таблиц не приветствуется, и обычно лучше использовать либо пользовательские поля, либо PluginStore. Я пока не смог найти реальной документации по PluginStore, но сейчас активно изучаю этот вопрос.
Казалось бы, разумно спросить о «официально рекомендуемом Discourse подходе», прежде чем углубляться в какое-либо конкретное направление.
Спасибо ![]()
Зак