我正在关注Railscasts#343在PostgreSQL中进行全文搜索,并且在开始时我遇到了问题。Rails - Postgresql - 全文搜索 - Railscasts 343
我在MODELE替换此行:
where("name ilike :q or content ilike :q", q: "%#{query}%")
通过
where("name @@ :q or content @@ :q", q: query)
但是,它仍然不为他能在railscasts执行搜索。如果名称中包含“FOO”,并且内容为“BAR”,并且如果搜索“FOO BAR”,则结果为空。 (如使用旧代码和 “ILIKE” 功能)
的SQL请求看起来像:
* FROM "posts" where (name @@ 'foo bar' or content @@ 'foo bar')
我使用PostgreSQL 9.2.2,3.2.6的Rails和Ruby 1.9.3p125上Windows 7 x64。
提前致谢。
编辑
我的宝石文件:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'pg'
gem "ransack"
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
我删除了所有的注释行。 PS:只是要清楚,在我添加“ransack”之前,我有同样的问题。
请包括你的gemfile。 – gabrielhilal
你可以尝试'foo | bar'而不是'foo bar'吗? – rainkinz
我得到:* FROM“posts”where(name @@'foo | bar'或content @@'foo | bar')。 – Dl33ter