我已经在我的Node
模型上实现了 PgSearch,如下所示:
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
理想情况下,我希望能够做的是让某人能够输入其中一个关联的文本表示(标志),并在该标志上设置搜索过滤器。
例如:“名称:Bouncing Ball”,搜索将发生在模型上调用的列name
上nodes
。Aka...它将查找具有名称的所有节点,Bouncing Ball
而不搜索其他列或模型甚至任何关联。
自然,我希望能够进行如下搜索:(
owner: John Brown
搜索所有者/用户 first_name 和 last_name 为 John Brown 的所有节点),comment: Manhattan
(搜索对Manhattan
副本中的文本有评论的所有节点,等等上。
如何使用 PgSearch 实现这一目标?