Более общий, чем Array#include?
, который требует проверки по значению, равен Enumerable#any?
:
SubScale.all.each do |ss|
# Run the code if the value is an exact match
run_code if scales.include?(ss.key)
end
SubScale.all.each do |ss|
# Run the code if the block returns a truthy value
run_code if scales.any?{ |scale| scale.downcase == ss.key.downcase }
end
Наконец, если этоточное соответствие, которое вы хотите, и скорость оказывается проблемой (сначала профиль!), вы можете обменять память на производительность, используя хэш для поиска вашего ключа в O (1) вместо O (n) времени:
scale_lookup = Hash[ scales.map{ |s| [s,true] } ]
SubScale.all.each do |ss|
run_code if scale_lookup[ss.key]
end