对象FoodType
和Vegetable
具有属性id
。有几个不同的FoodType
是Vegetable
s。
我想检查vegetable.id
- my_vegetable_id
- 是否等于被认为是蔬菜的任何`FoodType id。
我有一个包含多个FoodType
s的数组:
valid_foodtypes = [Spinach, Cauliflower, Carrot]
检查给定vegetable.id
是否等于id
中任何对象的valid_foodtypes
的最佳方式是什么?
我能做到:
my_vegatable_id = vegatable.id
valid_foodtypes.each do |foodtype|
if foodtype.id == vegetable.id
# Execute code, then break because once is enough
break
有没有更好的方法,也许是一个单行,这样做?
答案 0 :(得分:3)
我做
if valid_foodtypes.any? {|foodtype| foodtype.id == vegetable.id }
# code here
end
或:
if valid_foodtypes.map(&:id).include?(vegetable.id)
# code here
end
答案 1 :(得分:0)
如果valid_foodtypes
是数组,那么
foodtype = valid_foodtypes.find{|type| type.id == vegetable.id}
# Do whatever with the found foodtype.
# Note that foodtype can be nil!!
如果是关系,那么
foodtype = valid_foodtypes.find(vegetable.id)