У меня есть простой класс, как:Как использовать агрегат в заказе в DataMapper?
class Foo
include DataMapper::Resource
property :id, Serial
property :bar, Text, lazy: false
property :created_on, DateTime, default: lambda { |r,p| DateTime.now }
end
Я хочу, чтобы выбрать их, сгруппированных по бару и заказал макс (created_on). SQL мне нужно:
SELECT "bar" FROM "foo" GROUP BY "bar" ORDER BY MAX("created_on") DESC
но я не знаю, как это получить с помощью DataMapper.
Я пытался что-то вроде:
Foo.all(fields: [:bar], unique: true, order: [:created_on.desc.max])
, но вы не можете использовать максимум как это. Я не могу понять, как это сделать.
Вы можете помочь?
я имел такую же проблему и не мог понять, «хорошее» решение. То, что я делал, вызывало либо SQL напрямую, либо добавляло поле, которое является совокупностью (что, я думаю, не будет работать в вашем случае). – AlexQueue