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

Searching thru an array case-insensitivly

我有一个包含不同交易的数组,我需要在数组中搜索不同的企业名称。我需要一个可以找到这 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') }

但是这只是专门查找名称大小写

交易的名称可能类似于以下任何名称: "name": "DirecTV"; "name": "directv"; "name": "DIRECTV"

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

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

如果这是一个具有关系的 ActiveRecord 模型,出于性能目的,您应该这样对待它

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

如果它真的是一个数组,你可以这样做

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