ActionsLike0
Feature #13563
closedImplement Hash#choice method.
Status:
Closed
Assignee:
-
Target version:
-
Description
Hi,
I propose Hash#choice method.
It pick up key and value pairs in Hash like a below code.
{ :a => 1, 2 => "2", "c" => true }.choice(:a, 2) # => { :a => 1, 2 => "2" }
{ :a => 1, 2 => "2", "c" => true }.choice("c", 10000) # => { "c" => true, 10000 => nil }
This method is useful when Hash have many keys, but programer need few key's.
For instance, it pick up personal data in ActiveRecord model's data, and migrate to new device.
feature_phone_user = User.find(params[:src_user_id])
profile = feature_phone_user.attributes.choice(*%i[nickname email sex birthday prefecture])
smart_phone_user = User.new
smart_phone_user.attributes = profile
In other case, it pick up latest log from http request parameter.
condition = params.to_h.choice("user_id", "service_id")
latest_payment_log = PaymentLog.find_by(condition).last
If this method exist, I guess that many cases change to comfortable just a little.
Please consider about it.
And I write it.
https://github.com/baban/ruby/commit/4014ebe2ae261881669bef8369eb08aaecef2034
Updated by babanba-n (matzbara masanao) almost 8 years ago
- Subject changed from Implement Hash#choice mtthod. to Implement Hash#choice method.
Updated by mrkn (Kenta Murata) over 7 years ago
- Related to Feature #8499: Importing Hash#slice, Hash#slice!, Hash#except, and Hash#except! from ActiveSupport added
Updated by matz (Yukihiro Matsumoto) over 5 years ago
- Related to Feature #15822: Add Hash#except added
ActionsLike0