aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorMarcel Molina <marcel@vernix.org>2007-10-26 03:42:28 +0000
committerMarcel Molina <marcel@vernix.org>2007-10-26 03:42:28 +0000
commitbf658a906bf32127429f3ba808cef65c49b59607 (patch)
tree3423b2b9689a903561b20168c2fc59f7a4504c56 /activerecord/test
parent7f8183e3c4449d2442a95ed75504d1fba4b4cf8d (diff)
downloadrails-bf658a906bf32127429f3ba808cef65c49b59607.tar.gz
rails-bf658a906bf32127429f3ba808cef65c49b59607.tar.bz2
rails-bf658a906bf32127429f3ba808cef65c49b59607.zip
Allow find on a has_many association defined with :finder_sql to accept id arguments as strings like regular find does. Closes #9916 [krishna]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8030 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rwxr-xr-xactiverecord/test/associations_test.rb16
-rwxr-xr-xactiverecord/test/fixtures/company.rb1
-rw-r--r--activerecord/test/reflection_test.rb4
3 files changed, 19 insertions, 2 deletions
diff --git a/activerecord/test/associations_test.rb b/activerecord/test/associations_test.rb
index 03431049ae..9f155dd4ab 100755
--- a/activerecord/test/associations_test.rb
+++ b/activerecord/test/associations_test.rb
@@ -535,6 +535,22 @@ class HasManyAssociationsTest < Test::Unit::TestCase
assert_raises(ActiveRecord::RecordNotFound) { firm.clients.find(2, 99) }
end
+ def test_find_string_ids_when_using_finder_sql
+ firm = Firm.find(:first)
+
+ client = firm.clients_using_finder_sql.find("2")
+ assert_kind_of Client, client
+
+ client_ary = firm.clients_using_finder_sql.find(["2"])
+ assert_kind_of Array, client_ary
+ assert_equal client, client_ary.first
+
+ client_ary = firm.clients_using_finder_sql.find("2", "3")
+ assert_kind_of Array, client_ary
+ assert_equal 2, client_ary.size
+ assert_equal client, client_ary.first
+ end
+
def test_find_all
firm = Firm.find(:first)
assert_equal 2, firm.clients.find(:all, :conditions => "#{QUOTED_TYPE} = 'Client'").length
diff --git a/activerecord/test/fixtures/company.rb b/activerecord/test/fixtures/company.rb
index 0c93c80e03..1048d5a652 100755
--- a/activerecord/test/fixtures/company.rb
+++ b/activerecord/test/fixtures/company.rb
@@ -38,6 +38,7 @@ class Firm < Company
has_many :no_clients_using_counter_sql, :class_name => "Client",
:finder_sql => 'SELECT * FROM companies WHERE client_of = 1000',
:counter_sql => 'SELECT COUNT(*) FROM companies WHERE client_of = 1000'
+ has_many :clients_using_finder_sql, :class_name => "Client", :finder_sql => 'SELECT * FROM companies WHERE 1=1'
has_many :plain_clients, :class_name => 'Client'
has_one :account, :foreign_key => "firm_id", :dependent => :destroy
diff --git a/activerecord/test/reflection_test.rb b/activerecord/test/reflection_test.rb
index eca8b5e989..1ed5c2610c 100644
--- a/activerecord/test/reflection_test.rb
+++ b/activerecord/test/reflection_test.rb
@@ -159,8 +159,8 @@ class ReflectionTest < Test::Unit::TestCase
end
def test_reflection_of_all_associations
- assert_equal 16, Firm.reflect_on_all_associations.size
- assert_equal 14, Firm.reflect_on_all_associations(:has_many).size
+ assert_equal 17, Firm.reflect_on_all_associations.size
+ assert_equal 15, Firm.reflect_on_all_associations(:has_many).size
assert_equal 2, Firm.reflect_on_all_associations(:has_one).size
assert_equal 0, Firm.reflect_on_all_associations(:belongs_to).size
end