aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/collection_proxy.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2012-11-09 10:35:39 +0000
committerJon Leighton <j@jonathanleighton.com>2012-11-09 10:38:58 +0000
commit0130c17476b754aea20faf6914686c5d4c7086b9 (patch)
tree110c00f74453bee05b38ce3ae435cec0f814eda8 /activerecord/lib/active_record/associations/collection_proxy.rb
parentc33cfa6379e98a134672ae46580fcb54ce071f4f (diff)
downloadrails-0130c17476b754aea20faf6914686c5d4c7086b9.tar.gz
rails-0130c17476b754aea20faf6914686c5d4c7086b9.tar.bz2
rails-0130c17476b754aea20faf6914686c5d4c7086b9.zip
Relations built off collection associations with an unsaved owner should be null relations
For example, the following should not run any query on the database: Post.new.comments.where(body: 'omg').to_a # => [] Fixes #5215.
Diffstat (limited to 'activerecord/lib/active_record/associations/collection_proxy.rb')
-rw-r--r--activerecord/lib/active_record/associations/collection_proxy.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations/collection_proxy.rb b/activerecord/lib/active_record/associations/collection_proxy.rb
index e73f940334..536e108f0e 100644
--- a/activerecord/lib/active_record/associations/collection_proxy.rb
+++ b/activerecord/lib/active_record/associations/collection_proxy.rb
@@ -835,8 +835,9 @@ module ActiveRecord
# Returns a <tt>Relation</tt> object for the records in this association
def scope
association = @association
-
- @association.scope.extending! do
+ scope = @association.scope
+ scope.none! if @association.owner.new_record?
+ scope.extending! do
define_method(:proxy_association) { association }
end
end