我如何重写这个 Rails 查询以在 Heroku (Portegres) 上运行
@students = Student.find(:all,
:conditions =>["(concat(first_name, ' ', last_name) LIKE ?) OR
(concat(first_name, ' ', middle_names, ' ', last_name) LIKE ?)",
"%#{params[:search]}%", "%#{params[:search]}%"]
)
最佳答案
也遇到这个问题了。 Postgres 对 LIKE 运算符区分大小写,因此这是我在项目中所做的。另外,我不喜欢在本地运行 postgres,所以我让它在开发中使用 LIKE (mysql/sqlite) 运行,在生产中使用 ILIKE (postgres) 运行。 ILIKE 是“不区分大小写的”
/config/environment.rb
DATABASE_OPERATOR = {
:like_operator => "LIKE"
}
/config/environments/生产.rb
DATABASE_OPERATOR = {
:like_operator => 'ILIKE' #postgres awfulness
}
查询
@students = Student.find(:all, :conditions => ['(concat(first_name, " ", last_name) #{DATABASE_OPERATOR[:like_operator]} ?) OR (concat(first_name, " ", middle_names, " ", last_name) #{DATABASE_OPERATOR[:like_operator]} ?)', "%#{params[:search]}%", "%#{params[:search]}%"])
关于mysql - 重写 SQL 查询以在 heroku 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132816/