Я использую метод Ruby для доступа к информации о задаче из базы данных Postgres.
def query(statement, *params)
@logger.info("#{statement}: #{params}")
@db.exec_params(statement, params)
end
def tasks_completed_for_date(date="CURRENT_DATE")
sql = <<~SQL
SELECT tasks.name AS task_name,
timetable.start_at AS start_at,
timetable.end_at AS end_at,
timetable.duration AS duration,
timetable.start_at::date AS task_date
FROM tasks
JOIN timetable ON tasks.id = timetable.task_id
WHERE timetable.start_at::date = $1
AND timetable.duration IS NOT NULL
ORDER BY tasks.name ASC;
SQL
result = query(sql, date)
if result.ntuples > 0
result.map do |tuple|
{
task_name: tuple['task_name'],
start_at: tuple['start_at'].slice(11, 5),
end_at: tuple['end_at'].slice(11, 5),
total_time: tuple['duration'].slice(0, 5),
task_date: tuple['task_date'].slice(5, 5)
}
end
end
end
Я хочу, чтобы значением по умолчанию для запроса была текущая дата. Я подумал, что лучший способ сделать это - установить параметр по умолчанию в методе с именем tasks_completed_for_date
на строку CURRENT_DATE
. Эта строка будет интерпретироваться PSQL как метод CURRENT_DATE
и возвращать данные на основе этой даты. Вместо этого я получаю следующую ошибку:
ОШИБКА: значение даты / времени «current» больше не поддерживается
Я вообще не использую «current», и я знаю, что что бы это ни было, этоустарели. Есть ли способ передать метод PSQL в запрос (вместо $ 1), как я пытаюсь здесь, что не приводит к ошибке?