Rails 5, Postgres, ActiveRecord - как включить значение функции в качестве поля модели
Я использую модуль Trigram (pg_trgm) для Postgres в приложении Rails 5 для текстового поиска. Мне удалось успешно найти удовлетворительные результаты, используя следующий вызов, чтобы найти предельное количество записей, имена которых похожи на запрос:
def self.glance(query, limit = 10)
find_by_sql(['select *, name <-> ? as confidence from studies order by confidence limit ?', query, limit])
end
Теперь я хотел бы расширить результаты, включив в них значение функции сходства для каждой записи и целевой запрос для отображения.
Меня считают, что я должен установить область (или метод класса), где я могу сделать параметризованный вызов оператора расстояния (name <->?), А затем вернуть значение, как если бы оно было атрибутом в модели базы данных.
Могу ли я получить рекомендацию по наилучшей практике для этого? Спасибо.
1 ответ
Если вы на study
Модель, я думал, что вы можете использовать область видимости и, как реализовано следующее:
scope :glance, ->(query, limit = 10) { where('name LIKE %?%', query).order(:confidence).limit(limit) }