搜索通过不区分大小写的数组

时间:2015-04-16 22:18:55

标签: ruby-on-rails arrays case-insensitive

我有一系列不同的交易,我需要通过数组搜索不同的商家名称。我需要一种可以找到这3个名字的搜索方法。

#<Transaction:0xdf38664 @id="kZB3Y63qBvSDK5eM8K3ESqQDLbpzEZfj19wje", @account="ODaJY8Jza5cBgj7XDg3euOoR7ogrjeCMQZPed", @amount=189.85, @name="DIRECTV", @meta={"is_risky"=>false, "location"=>{}}, @location=nil, @pending=false, @score={"location"=>{}, "name"=>1}, @type={"primary"=>"place"}, @category=["Service", "Cable"], @category_id="18009000">]

我现在的搜索是:

@transactions = @user.transactions.find_all { |t| t.name.include? 'comcast') }

但这只能找到具体的名称

交易可能具有以下任何一个名称:     “名字”:“DirecTV”;     “名字”:“directv”;     “名字”:“DIRECTV”

我需要一种方法,可以使用相同的名称搜索找到所有这3个名称。

我认为是casecmp,但只返回一个不是数组项的数字。除非有办法使用casecmp返回事务数组,但我不知道如何。

1 个答案:

答案 0 :(得分:1)

如果这是具有关系的ActiveRecord模型,则应将其视为性能目的

@user.transactions.where "lower(name) IN (?)", ["comcast", "directv", "somethingelse"]

如果它确实是一个数组,你可以做

@user.transactions.find_all {|t| t.name.downcase =~ /comcast|directv|somethingelse/ }