diff options
author | Ben Woosley <ben.woosley@gmail.com> | 2013-05-10 19:24:56 +0200 |
---|---|---|
committer | Ben Woosley <ben.woosley@gmail.com> | 2013-05-10 19:27:12 +0200 |
commit | 2fcafee250ee24224b8fb8c1d884a48770fe08b3 (patch) | |
tree | 633fc3fa743a5ec4003af60f5dd94ac19b82ee6f /activerecord | |
parent | 1f11dbf0b4dacede0da1be1a0675e501d1b0fced (diff) | |
download | rails-2fcafee250ee24224b8fb8c1d884a48770fe08b3.tar.gz rails-2fcafee250ee24224b8fb8c1d884a48770fe08b3.tar.bz2 rails-2fcafee250ee24224b8fb8c1d884a48770fe08b3.zip |
Fix that #pluck wasn't rescuing ThrowResult, meaning it would blow up when failing to construct_limited_ids_condition.
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/relation/calculations.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/calculations_test.rb | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb index 7239270c4d..308db8227f 100644 --- a/activerecord/lib/active_record/relation/calculations.rb +++ b/activerecord/lib/active_record/relation/calculations.rb @@ -189,6 +189,8 @@ module ActiveRecord end columns.one? ? result.map!(&:first) : result end + rescue ThrowResult + [] end # Pluck all the ID's for the relation using the table's primary key diff --git a/activerecord/test/cases/calculations_test.rb b/activerecord/test/cases/calculations_test.rb index f49bef2346..5e55f27ab6 100644 --- a/activerecord/test/cases/calculations_test.rb +++ b/activerecord/test/cases/calculations_test.rb @@ -6,6 +6,7 @@ require 'models/edge' require 'models/organization' require 'models/possession' require 'models/topic' +require 'models/reply' require 'models/minivan' require 'models/speedometer' require 'models/ship_part' @@ -539,6 +540,11 @@ class CalculationsTest < ActiveRecord::TestCase assert_equal Company.all.map(&:id).sort, Company.ids.sort end + def test_pluck_with_includes_limit_and_empty_result + assert_equal [], Topic.includes(:replies).limit(0).pluck(:id) + assert_equal [], Topic.includes(:replies).limit(1).where('0 = 1').pluck(:id) + end + def test_pluck_not_auto_table_name_prefix_if_column_included Company.create!(:name => "test", :contracts => [Contract.new(:developer_id => 7)]) ids = Company.includes(:contracts).pluck(:developer_id) |