我有一系列不同的交易,我需要通过数组搜索不同的商家名称。我需要一种可以找到这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返回事务数组,但我不知道如何。
答案 0 :(得分:1)
如果这是具有关系的ActiveRecord模型,则应将其视为性能目的
@user.transactions.where "lower(name) IN (?)", ["comcast", "directv", "somethingelse"]
如果它确实是一个数组,你可以做
@user.transactions.find_all {|t| t.name.downcase =~ /comcast|directv|somethingelse/ }