Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Array attribute conditions work with proxied association collections.…

… Closes #8318.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7133 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit 02311a5db1800a4654f80ec71e8b7d32b444ff27 1 parent 08d23d5
@jeremy jeremy authored
View
2  activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Array attribute conditions work with proxied association collections. #8318 [kamal, theamazingrando]
+
* Fix polymorphic has_one associations declared in an abstract class. #8638 [lifofifo, daxhuiberts]
* Fixed validates_associated should not stop on the first error #4276 [mrj/manfred/josh]
View
2  activerecord/lib/active_record/base.rb
@@ -1287,7 +1287,7 @@ def all_attributes_exists?(attribute_names)
def attribute_condition(argument)
case argument
when nil then "IS ?"
- when Array then "IN (?)"
+ when Array, ActiveRecord::Associations::AssociationCollection then "IN (?)"
when Range then "BETWEEN ? AND ?"
else "= ?"
end
View
6 activerecord/test/finder_test.rb
@@ -8,7 +8,7 @@
require 'fixtures/post'
class FinderTest < Test::Unit::TestCase
- fixtures :companies, :topics, :entrants, :developers, :developers_projects, :posts, :comments, :accounts
+ fixtures :companies, :topics, :entrants, :developers, :developers_projects, :posts, :comments, :accounts, :authors
def test_find
assert_equal(topics(:first).title, Topic.find(1).title)
@@ -159,6 +159,10 @@ def test_find_on_hash_conditions
assert_raises(ActiveRecord::RecordNotFound) { Topic.find(1, :conditions => { :approved => true }) }
end
+ def test_find_on_association_proxy_conditions
+ assert_equal [1, 2, 3, 5, 6, 7, 8, 9, 10], Comment.find_all_by_post_id(authors(:david).posts).map(&:id).sort
+ end
+
def test_find_on_hash_conditions_with_range
assert_equal [1,2], Topic.find(:all, :conditions => { :id => 1..2 }).map(&:id).sort
assert_raises(ActiveRecord::RecordNotFound) { Topic.find(1, :conditions => { :id => 2..3 }) }
Please sign in to comment.
Something went wrong with that request. Please try again.