From 9b188c5bfe04349aa8ee0eeb2b53456601b8c3fc Mon Sep 17 00:00:00 2001 From: Steven Fenigstein Date: Fri, 11 Feb 2011 00:39:58 -0800 Subject: removed an unnecessary second query when passing an ActiveRecord::Relation to a where clause. And added ability to use subselects in where clauses. --- activerecord/lib/active_record/relation/predicate_builder.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/relation/predicate_builder.rb b/activerecord/lib/active_record/relation/predicate_builder.rb index 61d9974570..80b5495569 100644 --- a/activerecord/lib/active_record/relation/predicate_builder.rb +++ b/activerecord/lib/active_record/relation/predicate_builder.rb @@ -18,7 +18,10 @@ module ActiveRecord attribute = table[column.to_sym] case value - when Array, ActiveRecord::Associations::AssociationCollection, ActiveRecord::Relation + when ActiveRecord::Relation + value.select_values = Array.wrap("#{value.klass.quoted_table_name}.id") if value.select_values.empty? + attribute.in(value.arel.ast) + when Array, ActiveRecord::Associations::AssociationCollection values = value.to_a.map { |x| x.is_a?(ActiveRecord::Base) ? x.id : x } -- cgit v1.2.3