在ruby数组中找到行

时间:2014-09-09 14:50:38

标签: mysql ruby

我有一个mysql查询返回这种类型的数据:

{"id"=>1, "serviceCode"=>"1D00", "price"=>9.19}
{"id"=>2, "serviceCode"=>"1D01", "price"=>9.65}

我需要根据id的匹配项返回serviceCode字段。

即。我需要一个像这样的方法

def findID(serviceCode)
    find the row that has the service code and return the ID
end

我正在考虑使用serviceCodes.each do |row|方法并循环执行

if row == serviceCode 
  return row['id']
end

有更快/更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用方法Enumerable#find

service_codes = [
  {"id"=>1, "serviceCode"=>"1D00", "price"=>9.19},
  {"id"=>2, "serviceCode"=>"1D01", "price"=>9.65}
]

service_codes.find { |row| row['serviceCode'] == '1D00' }
# => {"id"=>1, "serviceCode"=>"1D00", "price"=>9.19}

答案 1 :(得分:-2)

如果您使用Rails Active Record作为ORM而您的模型名为Product(仅作为示例), 你可以使用这样的东西:

def findID(serviceCode)
  Product.select(:id).where(serviceCode: serviceCode).first 
end

如果你在普通的ruby类(不推荐)中有简单的SQL查询,你应该改变这个查询只获得id,就像Luiggi提到的那样。但是,如果您的serviceCode来自外部请求,请注意SQL注入。