From 440f2890af5462402d1a77daaf1751a66742b974 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Wed, 21 Nov 2007 07:32:44 +0000 Subject: Dynamic finders on association collections respect association :limit. Closes #10227 [Jack Danger Canty] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8178 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../associations/has_and_belongs_to_many_association.rb | 6 +++++- activerecord/lib/active_record/associations/has_many_association.rb | 2 +- .../lib/active_record/associations/has_many_through_association.rb | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'activerecord/lib') diff --git a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb index 0a03efa5e4..3d10721af6 100644 --- a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +++ b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb @@ -133,7 +133,11 @@ module ActiveRecord end def construct_scope - { :find => { :conditions => @finder_sql, :joins => @join_sql, :readonly => false, :order => @reflection.options[:order] } } + { :find => { :conditions => @finder_sql, + :joins => @join_sql, + :readonly => false, + :order => @reflection.options[:order], + :limit => @reflection.options[:limit] } } end # Join tables with additional columns on top of the two foreign keys must be considered ambiguous unless a select diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb index 972745ee31..ead447baa0 100644 --- a/activerecord/lib/active_record/associations/has_many_association.rb +++ b/activerecord/lib/active_record/associations/has_many_association.rb @@ -167,7 +167,7 @@ module ActiveRecord def construct_scope create_scoping = {} set_belongs_to_association_for(create_scoping) - { :find => { :conditions => @finder_sql, :readonly => false, :order => @reflection.options[:order] }, :create => create_scoping } + { :find => { :conditions => @finder_sql, :readonly => false, :order => @reflection.options[:order], :limit => @reflection.options[:limit] }, :create => create_scoping } end end end diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb index a9cacb09c8..2d06e90416 100644 --- a/activerecord/lib/active_record/associations/has_many_through_association.rb +++ b/activerecord/lib/active_record/associations/has_many_through_association.rb @@ -236,7 +236,8 @@ module ActiveRecord :conditions => construct_conditions, :joins => construct_joins, :select => construct_select, - :order => @reflection.options[:order] } } + :order => @reflection.options[:order], + :limit => @reflection.options[:limit] } } end def construct_sql -- cgit v1.2.3