mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:01 -05:00
Fix pluck when columns/tables are reserved words.
Backport #7536 to fix #8968. Conflicts: activerecord/CHANGELOG.md activerecord/lib/active_record/relation/calculations.rb
This commit is contained in:
committed by
Yves Senn
parent
2a5d119b44
commit
b6d4931292
@@ -1,5 +1,11 @@
|
||||
## Rails 3.2.12 (unreleased) ##
|
||||
|
||||
* Fix `ActiveRecord::Relation#pluck` when columns or tables are reserved words.
|
||||
Backport #7536.
|
||||
Fix #8968.
|
||||
|
||||
*Ian Lesperance + Yves Senn + Kaspar Schiess*
|
||||
|
||||
* Don't run explain on slow queries for database adapters that don't support it.
|
||||
Backport #6197.
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ module ActiveRecord
|
||||
#
|
||||
def pluck(column_name)
|
||||
if column_name.is_a?(Symbol) && column_names.include?(column_name.to_s)
|
||||
column_name = "#{table_name}.#{column_name}"
|
||||
column_name = "#{connection.quote_table_name(table_name)}.#{connection.quote_column_name(column_name)}"
|
||||
else
|
||||
column_name = column_name.to_s
|
||||
end
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
require "cases/helper"
|
||||
require 'models/club'
|
||||
require 'models/company'
|
||||
require "models/contract"
|
||||
require 'models/topic'
|
||||
require 'models/edge'
|
||||
require 'models/club'
|
||||
require 'models/organization'
|
||||
require 'models/possession'
|
||||
require 'models/topic'
|
||||
|
||||
Company.has_many :accounts
|
||||
|
||||
@@ -503,4 +504,10 @@ class CalculationsTest < ActiveRecord::TestCase
|
||||
Company.create!(:name => "test", :contracts => [Contract.new(:developer_id => 7)])
|
||||
assert_equal [7], Company.joins(:contracts).pluck(:developer_id).map(&:to_i)
|
||||
end
|
||||
|
||||
def test_pluck_with_reserved_words
|
||||
Possession.create!(:where => "Over There")
|
||||
|
||||
assert_equal ["Over There"], Possession.pluck(:where)
|
||||
end
|
||||
end
|
||||
|
||||
3
activerecord/test/models/possession.rb
Normal file
3
activerecord/test/models/possession.rb
Normal file
@@ -0,0 +1,3 @@
|
||||
class Possession < ActiveRecord::Base
|
||||
self.table_name = 'having'
|
||||
end
|
||||
@@ -281,6 +281,10 @@ ActiveRecord::Schema.define do
|
||||
t.string :info
|
||||
end
|
||||
|
||||
create_table :having, :force => true do |t|
|
||||
t.string :where
|
||||
end
|
||||
|
||||
create_table :guids, :force => true do |t|
|
||||
t.column :key, :string
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user