diff options
author | Jon Leighton <j@jonathanleighton.com> | 2010-10-17 23:29:56 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2010-10-17 23:29:56 +0100 |
commit | 78b8c51cb3b0c629152f3bbaf6d8bcf988cc936e (patch) | |
tree | eae58b0877ee952c7a1809c02ad19ea7762e6440 /activerecord/lib/active_record/associations/belongs_to_association.rb | |
parent | edc176d33be9499f4c096779c5b4711b5daf0c06 (diff) | |
download | rails-78b8c51cb3b0c629152f3bbaf6d8bcf988cc936e.tar.gz rails-78b8c51cb3b0c629152f3bbaf6d8bcf988cc936e.tar.bz2 rails-78b8c51cb3b0c629152f3bbaf6d8bcf988cc936e.zip |
Refactoring: replace the mix of variables like @finder_sql, @counter_sql, etc with just a single scope hash (created on initialization of the proxy). This is now used consistently across all associations. Therefore, all you have to do to ensure finding/counting etc is done correctly is implement the scope correctly.
Diffstat (limited to 'activerecord/lib/active_record/associations/belongs_to_association.rb')
-rw-r--r-- | activerecord/lib/active_record/associations/belongs_to_association.rb | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/associations/belongs_to_association.rb b/activerecord/lib/active_record/associations/belongs_to_association.rb index 2eb56e5cd3..34b6cd5576 100644 --- a/activerecord/lib/active_record/associations/belongs_to_association.rb +++ b/activerecord/lib/active_record/associations/belongs_to_association.rb @@ -50,19 +50,21 @@ module ActiveRecord "find" end - options = @reflection.options.dup - (options.keys - [:select, :include, :readonly]).each do |key| - options.delete key - end - options[:conditions] = conditions + options = @reflection.options.dup.slice(:select, :include, :readonly) - the_target = @reflection.klass.send(find_method, - @owner[@reflection.primary_key_name], - options - ) if @owner[@reflection.primary_key_name] + the_target = with_scope(:find => @scope[:find]) do + @reflection.klass.send(find_method, + @owner[@reflection.primary_key_name], + options + ) if @owner[@reflection.primary_key_name] + end set_inverse_instance(the_target, @owner) the_target end + + def construct_find_scope + { :conditions => conditions } + end def foreign_key_present !@owner[@reflection.primary_key_name].nil? |