PIYO - Tech & Life -

ActiveRecord

PostgresSQL+ActiveRecordのwhereで大文字小文字を無視

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