Я использую рельсы 2.3.10 и новые для named_scope
. Я имею дело с SQL, который получает список последних приглашений определенного события. Я придумал SQL с подзапросом, и похоже, что он может делать то, что я хочу. Я думаю о том, возможно ли использовать named_scope
, чтобы сделать то же самое, чтобы я мог использовать его с find()
.
У меня есть следующие вопросы:
- Возможно ли реализовать SQL с
named_scope
?
- Может ли это быть элегантным образом, чтобы вспомогательный выбор не был включен в
:condition
? Требуется более одного named_scope?
- Как выглядят
named_scope
(s)?
- Как выглядит
find()
, когда он включает name_scope (s)?
SQL:
SELECT *
FROM invitation inv1
JOIN (
SELECT event_id, user_id, MAX(invite_time) AS last_invite_time
FROM invitation
GROUP BY event_id, user_id
) AS last_invite ON
inv1.event_id = last_invite.event_id AND
inv1.user_id = last_invite.user_id AND
inv1.invite_time = last_invite.last_invite_time
Данные приглашения:
event_id user_id invite_time invite_reply_code
1 78 2011-02-01 15:21 1
2 78 2011-02-02 11:45 1
2 79 2011-02-02 11:50 1
2 79 2011-02-02 11:55 1
2 80 2011-02-02 11:50 1
2 80 2011-02-02 11:51 1
Ожидаемый результат:
event_id user_id invite_time invite_reply_code
2 78 2011-02-02 11:45 1
2 79 2011-02-02 11:55 1
2 80 2011-02-02 11:51 1