diff options
author | Yehuda Katz <wycats@gmail.com> | 2012-04-30 10:09:26 -0700 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2012-04-30 10:09:26 -0700 |
commit | 69c2307a7d48a3ab64a161fbf1d3fd20675e3f38 (patch) | |
tree | 8e0fcac9f09ca6ea0d59288f65b6542d293ae1c5 | |
parent | c435feb4044f6c62bb188c459c3be5d81cc77b07 (diff) | |
parent | 93076168c4d2209e007a32abc7142cc23782d56a (diff) | |
download | rails-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.rb | 10 | ||||
-rw-r--r-- | activerecord/test/cases/calculations_test.rb | 4 |
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 |