У меня есть модельКак выбрать все последние записи модели на основе атрибута?
class Log < ActiveRecord::Base
attr_accessible :key, :value
end
С учетом этого журнала таблицы:
id: 1, key: "apple", value: "tasty",
id: 2, key: "apple", value: "green",
id: 3, key: "apple", value: "sour",
id: 4, key: "orange", value: "juicy",
id: 5, key: "orange", value: "round",
id: 6, key: "banana", value: "yellow",
Я хочу сферу, которая возвращает последний журнал для каждого уникального ключа, а именно журналы с идентификатором 3, 5, 6
утверждая, что яблоки кислые, апельсины круглые, а бананы - желтые.
Я хотел бы сделать это на стороне базы данных, но не хватает знаний, я могу только представить себе рубинового решение на стороне с неэффективного цикла
Log.all.pluck(:key).uniq.map {|key| Log.where(key: key).last }
Излишне говорить, зацикливание над все уникальные ключи будут расти медленно поскольку содержимое таблицы увеличивается и, самое главное, возвращает массив, а не объект ActiveRecord :: Relation.
Можно ли это сделать с помощью SQL?
Log.find (3,5,6) – emaillenin
Смазливая, но это тривиализованный пример. Фактическая база данных содержит сотни ключей в случайном порядке. – Epigene
Что вы сделали/попробовали? –