Я хочу получить результат SQL в виде хэша из ::ActiveRecord_Relation
, потому что создание реальных объектов ActiveRecord выполняется очень медленно. Обычно я использую pluck
, а затем заархивирую результат в хэш:
keys = [:name, :created_at]
hash = relation.pluck(*keys).map{|row| Hash[*keys.zip(row).flatten]}
Но запрос, который мне нужен, имеет функцию SQL, например:
SELECT name, UNIX_TIMESTAMP(created_at) - 3600 as hour_before_created FROM ...
Я могу сделать это, используя select
Ареля:
rel = rel.select("name", "UNIX_TIMESTAMP(created_at) - 3600 as hour_before_created)")
hash = rel.as_json(except: :id)
Что дает правильный вывод, но, к сожалению, создает экземпляры объектов ActiveRecord.
Каков правильный способ получить хэш с соответствующими заголовками из каждого предложения as
без создания экземпляров объектов ActiveRecord?