diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2010-01-14 13:36:33 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2010-01-16 00:02:46 +0530 |
commit | bed9179aa1496f6d28891cf515af0d7e515ebbab (patch) | |
tree | b0c551489b45f93f66c0d726c55fe000b59803ea /activerecord/lib/active_record/relation.rb | |
parent | 1c30ec23fef2479cd037945e57a74e5c89c9ece1 (diff) | |
download | rails-bed9179aa1496f6d28891cf515af0d7e515ebbab.tar.gz rails-bed9179aa1496f6d28891cf515af0d7e515ebbab.tar.bz2 rails-bed9179aa1496f6d28891cf515af0d7e515ebbab.zip |
Make scopes use relations under the hood
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 33127194b0..8a86d2e60a 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -47,17 +47,20 @@ module ActiveRecord @records = if find_with_associations begin - @klass.send(:find_with_associations, { - :select => arel.send(:select_clauses).join(', '), + options = { + :select => @select_values.any? ? @select_values.join(", ") : nil, :joins => arel.joins(arel), - :group => arel.send(:group_clauses).join(', '), + :group => @group_values.any? ? @group_values.join(", ") : nil, :order => order_clause, :conditions => where_clause, :limit => arel.taken, :offset => arel.skipped, :from => (arel.send(:from_clauses) if arel.send(:sources).present?) - }, - ActiveRecord::Associations::ClassMethods::JoinDependency.new(@klass, @eager_load_values + @includes_values, nil)) + } + + including = (@eager_load_values + @includes_values).uniq + join_dependency = ActiveRecord::Associations::ClassMethods::JoinDependency.new(@klass, including, nil) + @klass.send(:find_with_associations, options, join_dependency) rescue ThrowResult [] end @@ -161,7 +164,7 @@ module ActiveRecord end def with_create_scope - @klass.send(:with_scope, :create => scope_for_create) { yield } + @klass.send(:with_scope, :create => scope_for_create, :find => {}) { yield } end def scope_for_create |