aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2012-04-30 10:09:26 -0700
committerYehuda Katz <wycats@gmail.com>2012-04-30 10:09:26 -0700
commit69c2307a7d48a3ab64a161fbf1d3fd20675e3f38 (patch)
tree8e0fcac9f09ca6ea0d59288f65b6542d293ae1c5
parentc435feb4044f6c62bb188c459c3be5d81cc77b07 (diff)
parent93076168c4d2209e007a32abc7142cc23782d56a (diff)
downloadrails-69c2307a7d48a3ab64a161fbf1d3fd20675e3f38.tar.gz
rails-69c2307a7d48a3ab64a161fbf1d3fd20675e3f38.tar.bz2
rails-69c2307a7d48a3ab64a161fbf1d3fd20675e3f38.zip
Merge pull request #6091 from twinturbo/add-ids
Add ActiveRecord::Base#ids - Close #5812
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb10
-rw-r--r--activerecord/test/cases/calculations_test.rb4
2 files changed, 14 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index db894c8aa9..f388b75c05 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -139,6 +139,16 @@ module ActiveRecord
end
end
+ # Pluck all the ID's for the relation using the table's primary key
+ #
+ # Examples:
+ #
+ # Person.ids # SELECT people.id FROM people
+ # Person.joins(:companies).ids # SELECT people.id FROM PEOPLE INNER JOIN companies ON companies.person_id = people.id
+ def ids
+ pluck primary_key
+ end
+
private
def perform_calculation(operation, column_name, options = {})
diff --git a/activerecord/test/cases/calculations_test.rb b/activerecord/test/cases/calculations_test.rb
index 2e566ff873..4ddd99ea97 100644
--- a/activerecord/test/cases/calculations_test.rb
+++ b/activerecord/test/cases/calculations_test.rb
@@ -465,4 +465,8 @@ class CalculationsTest < ActiveRecord::TestCase
Company.create!(:name => "test", :contracts => [Contract.new(:developer_id => 7)])
assert_equal [7], Company.joins(:contracts).pluck(:developer_id)
end
+
+ def test_plucks_with_ids
+ assert_equal Company.all.map(&:id), Company.ids
+ end
end