Dra*_*ack 14 sql activerecord ruby-on-rails case-insensitive
我需要从 2 个参数中找到一条记录,但我需要其中一个不区分大小写。当前区分大小写的行是
c = Course.find_by(subject_area: area, cat_number: cat)
Run Code Online (Sandbox Code Playgroud)
但我需要 subject_area 不区分大小写。我将如何实现这一目标?
Tar*_*ast 10
这取决于数据库,您可能需要为此传入特定于数据库的 SQL(而不是使用 find_by)。你在使用 postrges 吗?如果是这样,这通常会起作用:
Course.where("LOWER(subject_area) = ? AND cat_number = ?", area.downcase, cat)
Run Code Online (Sandbox Code Playgroud)
或者,您可以在subject_area
每次保存新文件时将其转换为小写...然后只需使用:
Course.find_by(subject_area: area.downcase, cat_number: cat)
Run Code Online (Sandbox Code Playgroud)
我可能是错的,但目前不知道任何 rails-native 的方式来做不区分大小写的 rails find_by
小智 6
另一种选择是
c = Course.find_by("LOWER(subject_area)= ? AND cat_number = ?", area.downcase, cat)
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您使用的是 postgres,您可以执行以下操作:
> c = Course.find_by('subject_area ILIKE ? AND cat_number LIKE ?', area, cat)
Run Code Online (Sandbox Code Playgroud)
(ILIKE 用于做不敏感的搜索)
归档时间: |
|
查看次数: |
10635 次 |
最近记录: |