我正在尝试显示标题中包含“攻击”一词的所有指南。我这样做是这样的:
def attack
@guides = Guide.where(title: 'attack')
end
快速提问 - 如何使其非区分大小写且具有限制性?它可以包含“攻击”这个词的任何拼写,如“AtTaCK”,它可以包含更多单词。只要攻击以某种方式进入它。
然后,要在视图中打印出来,我这样做:
<% @guides.each do |guide| %>
<%= guide.title %>
<% end %>
答案 0 :(得分:3)
一个好的选择是利用Rails'Arel SQL manager,它明确支持不区分大小写的ActiveRecord查询:
t = Guide.arel_table
Guide.where(t[:title].matches('%attack'))
Here's an interesting blog post关于使用Arel的不区分大小写的查询的可移植性。值得一读,了解在数据库中使用Arel的含义。
答案 1 :(得分:1)
您可以使用lower
功能:
Guide.where("lower(title)='attack'")
作为评论:处理你的问题。这个标题并不是非常有用,你最后会丢掉一大堆与你的问题无关的代码。
答案 2 :(得分:1)
Stuarts的回答是正确的,但如果你不确定是否用小写保存标题,你也可以制作一个case insensitive search
Stack Overflow中有很多已回答的问题,其中包含更多数据:
答案 3 :(得分:0)
对于不区分大小写且标题中的任何位置,请执行...
@guides = Guide.where("title LIKE %attack%")