我有一个类名列表:obj_list = ["Fruit", "Vegetable"]
我需要迭代它们并找到color
属性设置为red
的所有对象(假设水果和蔬菜都具有此属性)。
答案 0 :(得分:0)
这会将Fruit
与color: 'red'
对象列表@vegetables
和Vegetable
color: 'red'
匹配obj_list = ["Fruit", "Vegetable"]
obj_list.each do |c|
list_name = "@#{c.downcase}s"
list_objects = Object.const_get(c).where(color: 'red')
instance_variable_set(list_name, list_objects)
end
@fruits #=> Fruit.where(color: 'red')
@vegetables #=> Vegetable.where(color: 'red')
UPDATE sonarqube_production.users SET user_local = 0, external_identity_provider = 'ldap' WHERE id != 'admin';
希望这会有所帮助
答案 1 :(得分:0)
你也可以这样做:
obj_list = ["Fruit", "Vegetable"]
obj_list.each_with_object(Array.new){ |object, array| array.push(object.constantize.send(:where, {color: 'red'})) }
它将是包含水果和蔬菜的Active Record关系数组。