我可以在 Rails 条件语句中使用像 "ILIKE" 这样的方法吗?

Is there a method like "ILIKE" I can use in a Rails conditional statement?

如果一个字符串包含在另一个字符串中(不区分大小写),我想执行一个操作。

所以我的 if 语句看起来像这样:

@a = "search"
if @a ILIKE "fullSearch"
  #do stuff
end

您可以使用带 i 选项的正则表达式。 i 我觉得麻木不仁。

a = "fullSearch"
a =~ /search/i
 => 4 
a =~ /search/
 => nil 

或者您可以将字符串小写并检查它是否存在于另一个字符串中

a = "fullSearch"
a.downcase.include?('search')
 => true

有很多方法可以到达那里。这是三个:

'Foo'.downcase.include?('f') # => true
'Foo'.downcase['f'] # => "f"

这些记录在 the String documentation 中,如果您要在 Ruby 中编程,您需要非常熟悉这些内容。

'Foo'[/f/i] # => "F"

这是 String 的 [] slice 快捷方式和正则表达式的混合体。我推荐前两个中的一个,因为它们速度更快,但为了彻底起见,我添加了它,因为人们喜欢用正则表达式锤子敲打东西。 Regexp 包含 /f/i.

的文档

您会注意到它们 return 不同。 Ruby 将除 falsenil 以外的任何东西都视为真,又名 "truthiness",所以这三个都是 returning 一个 true 值,并且,因此,您可以在条件测试中使用它们。

您可以使用include?方法。所以在这种情况下:

@var = 'Search'
if var.include? 'ear'
  #action
end

记住include?方法是区分大小写的。因此,如果您使用 include? 'sea' 之类的内容,它将 return false。您可能想在调用 include?()

之前执行 downcase
@var = 'Search'
if var.downcase.include? 'sea'
  #action
end

希望对您有所帮助。