
SQLのlower
1Model.where("lower(name) like ?", "%john%").to_sql
2# SELECT \"models\".* FROM \"models\" WHERE (lower(name) like '%john%')
SQLのILIKE
PosgreSQLではILIKEが使える。
1Model.where("name ilike ?", "%john%").to_sql
2# SELECT \"models\".* FROM \"models\" WHERE (name ilike '%john%')
arelを使う
1t = Model.arel_table
2Model.where(t[:name].matches("%john%")).to_sql
3# SELECT \"models\".* FROM \"models\" WHERE (\"models\".\"name\" ILIKE '%john%')"
matchesがILIKEを使ってくれる。