在pg_search查询后列出可搜索的值

时间:2013-07-26 15:01:01

标签: ruby-on-rails ruby gem pg-search

有没有办法从模型中获取pg_search结果而不是索引表条目?我的代码有效,但我必须遍历结果。

search = PgSearch.multisearch(params[:search])

@items = Array.new
search.find_each do |result|
  @items.push(result.searchable)
end

1 个答案:

答案 0 :(得分:4)

Multisearch将始终返回PgSearch::Document条记录。

如果您想直接查询模型,可以定义pg_search_scope,例如:

pg_search_scope :custom_search, :against => [:title] # Can use multiple fields

然后将其与search = Model.custom_search(params[:search])一起使用,这将返回Model条记录。

此外,编写上述代码的更简洁方法是:

search = PgSearch.multisearch(params[:search])
@items = search.map(&:searchable)