1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Deprecate ActiveRecord::Result#to_hash in favor of #to_a

method returns an array of hashes, not a hash
e.g. Hash.try_convert(result) calls #to_hash and raises a TypeError

[Gannon McGibbon + Kevin Cheng]
This commit is contained in:
Kevin Cheng 2016-01-29 17:44:04 -05:00 committed by Gannon McGibbon
parent e925cb4d85
commit 16510d609c
4 changed files with 27 additions and 5 deletions

View file

@ -1,3 +1,7 @@
* Deprecate `ActiveRecord::Result#to_hash` in favor of `ActiveRecord::Result#to_a`.
*Gannon McGibbon*, *Kevin Cheng*
* SQLite3 adapter supports expression indexes.
```

View file

@ -576,7 +576,7 @@ module ActiveRecord
column
end
else
basic_structure.to_hash
basic_structure.to_a
end
end

View file

@ -21,7 +21,7 @@ module ActiveRecord
# ]
#
# # Get an array of hashes representing the result (column => value):
# result.to_hash
# result.to_a
# # => [{"id" => 1, "title" => "title_1", "body" => "body_1"},
# {"id" => 2, "title" => "title_2", "body" => "body_2"},
# ...
@ -66,10 +66,18 @@ module ActiveRecord
end
# Returns an array of hashes representing each row record.
def to_hash
def to_a
hash_rows
end
def to_hash
ActiveSupport::Deprecation.warn(<<-MSG.squish)
`ActiveRecord::Result#to_hash` has been renamed to `to_a`.
`to_hash` is deprecated and will be removed in Rails 6.1.
MSG
to_a
end
alias :map! :map
alias :collect! :map

View file

@ -21,12 +21,22 @@ module ActiveRecord
assert_equal 3, result.length
end
test "to_hash returns row_hashes" do
test "to_a returns row_hashes" do
assert_equal [
{ "col_1" => "row 1 col 1", "col_2" => "row 1 col 2" },
{ "col_1" => "row 2 col 1", "col_2" => "row 2 col 2" },
{ "col_1" => "row 3 col 1", "col_2" => "row 3 col 2" },
], result.to_hash
], result.to_a
end
test "to_hash (deprecated) returns row_hashes" do
assert_deprecated do
assert_equal [
{ "col_1" => "row 1 col 1", "col_2" => "row 1 col 2" },
{ "col_1" => "row 2 col 1", "col_2" => "row 2 col 2" },
{ "col_1" => "row 3 col 1", "col_2" => "row 3 col 2" },
], result.to_hash
end
end
test "first returns first row as a hash" do