diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2012-11-08 10:49:33 -0800 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2012-11-08 10:49:33 -0800 |
commit | 70f384e0196fd4f8bcb7dea05af8611df4578563 (patch) | |
tree | a133a1f54a0c5b01416afbb20d6adb50ba50beb7 /activerecord/test | |
parent | dbd0b12a077703e9dda1ea941c9aba4628a576e1 (diff) | |
parent | 16d98b2a41dec3619b9bd48b6b534406d9d07ef4 (diff) | |
download | rails-70f384e0196fd4f8bcb7dea05af8611df4578563.tar.gz rails-70f384e0196fd4f8bcb7dea05af8611df4578563.tar.bz2 rails-70f384e0196fd4f8bcb7dea05af8611df4578563.zip |
Merge pull request #7987 from alexisbernard/3-2_find_in_batches_compatible_with_strings
Fix find_in_batches with customized primary_key on 3-2-stable
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/batches_test.rb | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/activerecord/test/cases/batches_test.rb b/activerecord/test/cases/batches_test.rb index 660098b9ad..ad2a749ab4 100644 --- a/activerecord/test/cases/batches_test.rb +++ b/activerecord/test/cases/batches_test.rb @@ -1,8 +1,9 @@ require 'cases/helper' require 'models/post' +require 'models/subscriber' class EachTest < ActiveRecord::TestCase - fixtures :posts + fixtures :posts, :subscribers def setup @posts = Post.order("id asc") @@ -136,4 +137,24 @@ class EachTest < ActiveRecord::TestCase assert_equal special_posts_ids, posts.map(&:id) end + def test_find_in_batches_should_use_any_column_as_primary_key + nick_order_subscribers = Subscriber.order('nick asc') + start_nick = nick_order_subscribers.second.nick + + subscribers = [] + Subscriber.find_in_batches(:batch_size => 1, :start => start_nick) do |batch| + subscribers.concat(batch) + end + + assert_equal nick_order_subscribers[1..-1].map(&:id), subscribers.map(&:id) + end + + def test_find_in_batches_should_use_any_column_as_primary_key_when_start_is_not_specified + Subscriber.count('nick') # preheat arel's table cache + assert_queries(Subscriber.count + 1) do + Subscriber.find_each(:batch_size => 1) do |subscriber| + assert_kind_of Subscriber, subscriber + end + end + end end |