Я реализовал PgSearch в моей модели Node
следующим образом:
include PgSearch
pg_search_scope :node_search, against: [:name, :user_id, :circa],
using: { tsearch: { any_word: true} },
:associated_against => {
comments: [:message],
user: [:first_name, :last_name, :email],
memberships: [:relation]
}
И в моем контроллере у меня есть это:
if params[:search]
@nodes = Node.node_search(params[:search])
end
В идеале, что бы я хотел сделать, пусть кто-то сможет ввести текстовое представление (флаг) одной из ассоциаций и иметь фильтр поиска только на этом флаге.
например. скажем: "name: Bouncing Ball", где поиск будет проходить только по столбцу под названием name
в модели nodes
. Aka... он будет искать все узлы с именем Bouncing Ball
и не искать другие столбцы или модели или даже любую из ассоциаций.
Естественно, я хотел бы иметь возможность выполнять поиск, например:
owner: John Brown
(который ищет все узлы, владельцем/пользователем first_name и last_name являются Джон Браун), comment: Manhattan
(который ищет все узлы, которые имеют комментарий с текстом Manhattan
в копии и т.д.
Как я могу достичь этого с помощью PgSearch?