У меня есть модель под названием Statement
, которая принадлежит Member
. Учитывая массив членов, я хочу создать запрос, который будет возвращать самый последний оператор для каждого из этих членов (предпочтительно в одном хорошем чистом запросе).
Я думал, что смогу добиться этого, используя group
и order
- что-то вроде:
# @members is already in an array
@statements = Statement.all(
:conditions => ["member_id IN(?)", @members.collect{|m| m.id}],
:group => :member_id,
:order => "created_at DESC"
)
Но, к сожалению, приведенное выше всегда возвращает самый старый оператор для каждого члена. Я попытался поменять местами опцию заказа, но, увы, она всегда возвращает самое старое утверждение группы, а не самое последнее.
Полагаю, group_by
не способ достичь этого - так как мне этого добиться?
PS - все, кто не читает Ruby / Rails, читают это, если вы знаете, как добиться этого в необработанном MySQL, а затем выстрелите.