aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorArthur Neves <arthurnn@gmail.com>2013-09-25 19:06:00 -0400
committerArthur Neves <arthurnn@gmail.com>2013-09-25 19:06:00 -0400
commit645af000a4bb0c742063e61d8da01aa5053bc9da (patch)
treef434f3b2407cd09d335b1deddd2cb846ed2ceeda /activerecord/lib/active_record
parentd1e36842ba8f3eb723fd65535cf292c898c73b68 (diff)
downloadrails-645af000a4bb0c742063e61d8da01aa5053bc9da.tar.gz
rails-645af000a4bb0c742063e61d8da01aa5053bc9da.tar.bz2
rails-645af000a4bb0c742063e61d8da01aa5053bc9da.zip
fix .find when inverse is set
.find([1]) should return an Array of entries, even when a invese object is in memory already
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/associations/collection_association.rb9
1 files changed, 4 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/associations/collection_association.rb b/activerecord/lib/active_record/associations/collection_association.rb
index 98d573a3a2..b9199f62b9 100644
--- a/activerecord/lib/active_record/associations/collection_association.rb
+++ b/activerecord/lib/active_record/associations/collection_association.rb
@@ -80,14 +80,13 @@ module ActiveRecord
load_target.find(*args) { |*block_args| yield(*block_args) }
else
if options[:inverse_of] && loaded?
- args = args.flatten
- raise RecordNotFound, "Couldn't find #{scope.klass.name} without an ID" if args.blank?
-
+ args_flatten = args.flatten
+ raise RecordNotFound, "Couldn't find #{scope.klass.name} without an ID" if args_flatten.blank?
result = find_by_scan(*args)
result_size = Array(result).size
- if !result || result_size != args.size
- scope.raise_record_not_found_exception!(args, result_size, args.size)
+ if !result || result_size != args_flatten.size
+ scope.raise_record_not_found_exception!(args_flatten, result_size, args_flatten.size)
else
result
end