Strip whitespace in disallow_raw_sql!

Removing trailing whitespace when matching columns in
`ActiveRecord::Sanitization.disallow_raw_sql!`.

Co-authored-by: Adrian Hirt <aedu.hirt@gmail.com>
This commit is contained in:
Gannon McGibbon 2021-02-04 16:32:25 -05:00
parent 1cd83476cd
commit d4a9744860
3 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,8 @@
* Removing trailing whitespace when matching columns in
`ActiveRecord::Sanitization.disallow_raw_sql!`.
*Gannon McGibbon*, *Adrian Hirt*
* Expose a way for applications to set a `primary_abstract_class`
Multiple database applications that use a primary abstract class that is not

View File

@ -137,7 +137,7 @@ module ActiveRecord
def disallow_raw_sql!(args, permit: connection.column_name_matcher) # :nodoc:
unexpected = nil
args.each do |arg|
next if arg.is_a?(Symbol) || Arel.arel_node?(arg) || permit.match?(arg.to_s)
next if arg.is_a?(Symbol) || Arel.arel_node?(arg) || permit.match?(arg.to_s.strip)
(unexpected ||= []) << arg
end

View File

@ -914,6 +914,11 @@ class CalculationsTest < ActiveRecord::TestCase
Account.order(:id).pluck("id, credit_limit")
end
def test_pluck_with_line_endings
assert_equal [[1, 50], [2, 50], [3, 50], [4, 60], [5, 55], [6, 53]],
Account.order(:id).pluck("id, credit_limit\n")
end
def test_pluck_with_multiple_columns_and_includes
Company.create!(name: "test", contracts: [Contract.new(developer_id: 7)])
companies_and_developers = Company.order("companies.id").includes(:contracts).pluck(:name, :developer_id)