我正在关注 PostgreSQL 中的 Railscasts #343 Full-Text Search,一开始我遇到了一个问题。
我在我的模型中替换了这一行:
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')
我在 Windows 7 x64 上使用 PostgreSQL 9.2.2、Rails 3.2.6 和 Ruby 1.9.3p125。
提前谢谢。
编辑
我的宝石文件:
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”之前,我遇到了同样的问题。