У меня есть этот простой SQL в heredoc
sql = <<-SQL
SELECT SUM(price) as total_price,
SUM(distance) as total_distance,
TO_CHAR(date, 'YYYY-MM') as month
FROM Rides
WHERE user_id = #{current_user.id}
GROUP_BY month
SQL
и вызов find_by_sql(sql)
Ride.find_by_sql(sql).each do |row|
"#{row.month}: { total_distance: #{row.total_distance}, total_price: #{row.total_price} }"
end
, и возникает ошибка:
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "GROUP_BY"
LINE 6: GROUP_BY month
^
: SELECT SUM(price) as total_price,
SUM(distance) as total_distance,
TO_CHAR(date, 'YYYY-MM') as month
FROM Rides
WHERE user_id = 1
GROUP_BY month
AsВы можете видеть, что он отлично выполняет интерполяцию user_id, поэтому проблема не в интерполяции.
Это работает, если я назначаю этот SQL переменной в виде строки, например:
str = "select sum(distance) as total_distance, sum(price) as total_price, to_char(date, 'YYYY-MM') as month from rides where user_id = #{ current_user.id } group by month"
Чтопроблема с heredoc?