aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/belongs_to_association.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2010-10-17 23:29:56 +0100
committerJon Leighton <j@jonathanleighton.com>2010-10-17 23:29:56 +0100
commit78b8c51cb3b0c629152f3bbaf6d8bcf988cc936e (patch)
treeeae58b0877ee952c7a1809c02ad19ea7762e6440 /activerecord/lib/active_record/associations/belongs_to_association.rb
parentedc176d33be9499f4c096779c5b4711b5daf0c06 (diff)
downloadrails-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.rb20
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?