В приложении Rails я хочу объединить несколько моделей в один поток активности.Как создать (высокую производительность) фид активности от нескольких моделей?
Например, у меня есть сообщение, комментарий, фото, статусные модели. Каждый из них принадлежит Пользователю, Учреждению и Городу. На странице User/Institution/City show я хочу отобразить хронологический список последних действий.
Из-за того, что вы читаете вокруг и из других вопросов о SO, на это, похоже, есть две школы мысли.
- Создайте полиморфную модель ActivityFeed, где, например, a Пользователь
has_many :posts as: feedable
. Затем визуализируйте коллекцию ActivityFeed на соответствующих отображаемых страницах. - Создайте и визуализируйте объединенный массив, например.
@user_feed = @user_photos + @user_comment +..
Но я не видел много дискуссий о плюсах и минусах каждого подхода.
Неужели кто-то еще попытался что-то подобное? Какие вопросы я должен думать или планировать при выборе подхода? Насколько хорошо каждый из них выполняется (особенно по мере увеличения базы данных)?
Мои требования:
- Чтобы отобразить все элементы, которые принадлежат к родительской модели.
- Чтобы иметь несколько разных типов родительской модели (Пользователь, Учреждение, Город и т. Д.).
- Для отображения отдельного элемента для каждого элемента в фиде активности, в зависимости от его класса.
Благодарен за любые мысли, личные впечатления или указатели на дополнительную информацию об этом. Должен ли я искать третий вариант? Меня особенно интересует производительность создания объединенного массива из нескольких запросов.
Благодаря
у вас есть ожидаемый запрос каждого второго типа цели в уме? – Blankman