@chronic86
Ruby on Rails junior

Как откорректировать данные для отображения графика в Ruby on Rails приложении?

Прошу помочь.
Есть запрос ActiveRecord

<%= pie_chart Uk.find_by_sql("SELECT uks.MEANING, SUM(OPLATA) FROM oplata o, uks WHERE o.UK_ID = uks.UK_ID GROUP BY uks.MEANING") %>


Возвращающий следующие данные:

[{"meaning":"Имя1","sum(oplata)":448616,"id":null},{"meaning":"Имя 2","sum(oplata)":112154,"id":null},{"meaning":"Имя 3","sum(oplata)":224308,"id":null}]


Как можно полученные данные преобразовать в что то подобное:

{"Имя 1":448616,"Имя 2":224308,"Имя 3":112154}

Или как можно корректно записать сделать запрос ActiveRecord без SQL injection?

uk.rb
class Uk < ActiveRecord::Base
    has_many :oplata
end


oplata.rb
class Oplata < ActiveRecord::Base
    belongs_to :uks
end
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
@chronic86 Автор вопроса
Ruby on Rails junior
К сожалению опыта маловато и наверное поэтому все попытки пробежаться по массиву всякими map, each и т.д. успехом не увенчались. Помог apidoc и запрос TableName.connection.select_rows("SQL")
В будущем надеюсь получиться корректно переписать этот запрос через ActiveRecord без SQL.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Sworg
Вы можете пробежаться по Вашему полученному массиву и сделать нужный хэш, как вариант
Ответ написан
Комментировать
b = a.map{|x| {x['meaning'] => x['sum(oplata)']}}
Конкретно как преобразовать данные написал без вдумывания что все это означает. Не проверял.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы