我正在进行这种搜索:
values = ModelName.find(:all, :conditions => ['attr_id IN (SELECT attr_id FROM srv_type_attr WHERE id IN (?))', serv_objt_attr.collect(&:stya_id)])
女巫给我返回了一组所需的值:
[33458, 33438]
接下来,我需要检查记录是否存在select
:
serv_objt_attr.select {|array| array.stya_id == values.collect(&:attr_id).uniq}
这是我正在考虑的一个例子。
那么如何使用select做到这一点,那么他将逐步了解我从中获得的所有价值观values
。
我知道我可以做到
values.collect(&:attr_id).uniq do |val|
serv_objt_attr.select {|array| array.stya_id == val}
end
但是我并不认为这是一个好选择。
Ruby 1.8.7 Rails 2.3.4
对于设置相交运算符来说,这是一个很好的情况:
values = ModelName.find(:all, :conditions => ['attr_id IN (SELECT attr_id FROM srv_type_attr WHERE id IN (?))', serv_objt_attr.collect(&:stya_id)])
values & Set.new(serv_objt_attr.map(&:stya_id)
这是&的作用:
>> values = [1,2,3]
=> [1, 2, 3]
>> other_array = [1,5,9,3]
=> [1, 5, 9, 3]
>> values & other_array
=> [1, 3]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句