ruby-on-rails - 我如何使用 pg_search 使用运算符实现高级搜索?

标签 ruby-on-rails postgresql ruby-on-rails-4 pg-search

我在我的 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]
    }

在我的 Controller 中我有这个:

if params[:search]
  @nodes = Node.node_search(params[:search])
end

不过,理想情况下,我希望能够让某人能够输入其中一个关联的文本表示(标志),并在该标志上设置搜索过滤器。

例如说:“name: Bouncing Ball”,其中搜索将仅在 nodes 模型上名为 name 的列上进行。 Aka...它会查找名称为 Bouncing Ball 的所有节点,而不搜索其他列或模型甚至任何关联。

当然,我希望能够进行如下搜索: owner: John Brown(搜索所有者/用户 first_name 和 last_name 为 John Brown 的所有节点),comment: Manhattan(搜索评论为副本中的文本 Manhattan,等等。

我如何使用 PgSearch 实现这一目标?

最佳答案

您是否尝试将“Dynamic search scopes”的组合与搜索字符串的某些 Controller 处理结合使用?

name: Bob,解析列/关系和搜索值,然后使用 lambda block 将其传递给 pg_search_scope?

关于ruby-on-rails - 我如何使用 pg_search 使用运算符实现高级搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470870/

相关文章:

ruby-on-rails - rails + postgres : Using Group query on a has_many through

ruby-on-rails - rails 4 什么时候需要 "inverse_of"?

MYSQL迁移到postgreSQL问题

ruby-on-rails - 没有参数的 `<<`(小于两倍)是什么意思?

java - failed.org.hibernate.exception.JDBCConnectionException : Error calling Driver#connect with PostGres Hibernate

ruby-on-rails - Rails 仅针对开发环境运行迁移

validation - 如何在自定义验证方法中使用现有的 Rails 验证器?

ruby-on-rails - 响应做格式问题

ruby-on-rails - 在 Rails 中搜索多列

ruby-on-rails - rails : adding vendor/cache to SCM?