Используйте вычисленное значение postgres без столбца в качестве переменной Ruby

У меня есть веб-приложение Hanami, в котором одна функция заключается в сравнении строк в базе данных со строкой, предоставленной пользователем. Для этого я использую расширение postgres pg_trgm. Переведенное условие запроса в Ruby выглядит так:

.where {similarity(:content, source_text_for_lookup) > sim_score_limit}

Проблема, которую мне нужно решить, - вернуть вычисленную оценку сходства в Ruby и представить ее пользователю. Однако оценка подобия не является атрибутом, поскольку она актуальна только или должна существовать только тогда, когда функция вызывается в PG для сравнения двух строк.

Есть ли способ сделать это?

С уважением, Себастьян

1 ответ

Решение

По крайней мере, в ПЗУ вы можете добавлять вызовы функций, что-то вроде

.select_append { float::similarity(:content, source_text_for_lookup).as(:similarity) }

Полученные структуры должны иметь similarity атрибут с нужным вам значением.

Другие вопросы по тегам