我有一个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
有更快/更简单的方法吗?
答案 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注入。