Permalink
Browse files

Merge pull request #8176 from senny/7551_pluck_with_select

`#pluck` can be used on a relation with `select` clause (#7551)
  • Loading branch information...
2 parents 12990c4 + 663d9ef commit 3a335720db249700c3d7d51ee450a6bf22aff5fd @rafaelfranca rafaelfranca committed Nov 13, 2012
View
@@ -1,7 +1,16 @@
## Rails 4.0.0 (unreleased) ##
+* `#pluck` can be used on a relation with `select` clause
+ Fix #7551
+
+ Example:
+
+ Topic.select([:approved, :id]).order(:id).pluck(:id)
+
+ *Yves Senn*
+
* Do not create useless database transaction when building `has_one` association.
-
+
Example:
User.has_one :profile
@@ -165,7 +165,9 @@ def pluck(*column_names)
if has_include?(column_names.first)
construct_relation_for_association_calculations.pluck(*column_names)
else
- result = klass.connection.select_all(select(column_names).arel, nil, bind_values)
+ relation = spawn
+ relation.select_values = column_names
+ result = klass.connection.select_all(relation.arel, nil, bind_values)
columns = result.columns.map do |key|
klass.column_types.fetch(key) {
result.column_types.fetch(key) {
@@ -580,4 +580,10 @@ def test_pluck_with_reserved_words
assert_equal ["Over There"], Possession.pluck(:where)
end
+
+ def test_pluck_replaces_select_clause
+ taks_relation = Topic.select(:approved, :id).order(:id)
+ assert_equal [1,2,3,4], taks_relation.pluck(:id)
+ assert_equal [false, true, true, true], taks_relation.pluck(:approved)
+ end
end

0 comments on commit 3a33572

Please sign in to comment.