У меня довольно простой запрос, который, похоже, не может быть правильным ....
Моя модель:
- Пользователь - имеет много Дружеских отношений (с другими пользователями)
- Пользователь - имеет много представлений
- Пользователь - имеет много комментариев
- Пользователь - имеет много голосов
Мне нужен счет, который представляет
Все друзья пользователя current_user, чьи представления, комментарии или голоса были созданы на дату> current_user.last_refresh_date
Сейчас я создаю массив, перебирая дружеские отношения и добавляя все предложения, комментарии и голоса. Затем я повторяю этот встроенный массив, сравнивая даты, чтобы определить, следует ли увеличить счет. Не самое идеальное решение.
Редактировать :
@ TobiasCohen
Эффективное решение. Спасибо!
Followup:
Я хочу добавить еще один отсчет к настоящему запросу. Мне нужно подсчитать все новые комментарии и голоса на current_user.submissions, которые не являются частью первоначального подсчета (т.е. не друга).
Псевдо-код:
current_user.submissions.join (: комментарии,: голоса,: друзья) .where ('last_activity>? AND friend_id! =?', Current_user.last_refresh_date, current_user.id) .count
Я не могу получить правильный запрос (новичок в сложных запросах через активную запись).
Я собирался сделать это отдельным запросом, а затем добавить его к исходному количеству. Может ли оно быть включено в один запрос вместо двух?