[#66126] Creation/Conversion methods/functions table for Ruby types — SASADA Koichi <ko1@...>
Hi,
5 messages
2014/11/07
[#66248] [ruby-trunk - Feature #10423] [PATCH] opt_str_lit*: avoid literal string allocations — normalperson@...
Issue #10423 has been updated by Eric Wong.
3 messages
2014/11/13
[#66595] [ruby-trunk - Bug #10557] [Open] Block not given when the argument is a string — bartosz@...
Issue #10557 has been reported by Bartosz Kopinski.
3 messages
2014/11/30
[ruby-core:66122] A new method on Hash to grab values out of nested hashes, failing gracefully?
From:
Gabe Kopley <gabriel.kopley@...>
Date:
2014-11-07 01:16:13 UTC
List:
ruby-core #66122
Hi folks,
This comes up sometimes in Rails programming [0]:
params[:order] && params[:order][:shipping_info] &&
params[:order][:shipping_info][:country]
or
params[:order][:shipping_info][:country] rescue nil
or
params.fetch(:order, {}).fetch(:shipping_info, {}).fetch(:country, nil)
What if Hash gave us a method to accomplish this more concisely?
Eg.
params.traverse_nested_hashes_and_return_nil_if_a_key_isnt_found(:order,
:shipping_info, :country)
Or to take a nice method name suggestion [1]:
params.dig(:order, :shipping_info, :country)
Another example solution is https://github.com/intridea/hashie#deepfetch
(Although I don't like "fetch" in this method name since it doesn't and
can't take a default value as an argument like Hash#fetch does)
Would a method like this possibly belong in Ruby core, or in Active Support
extensions, or is it just an all-around terrible idea?
Thanks,
Gabe
[0] Sources:
https://groups.google.com/d/msg/rubyonrails-core/bOkvcvS3t_A/QXLEXwt9ivAJ
https://stackoverflow.com/questions/1820451/ruby-style-how-to-check-whether-a-nested-hash-element-exists
https://stackoverflow.com/questions/19115838/how-do-i-use-the-fetch-method-for-nested-hash
https://stackoverflow.com/questions/10130726/ruby-access-multidimensional-hash-and-avoid-access-nil-object
[1] http://stackoverflow.com/a/1820492/283398