Hashにはmergeというメソッドがあります。
コイツをつかえば、二つのhashを一本に統合することができます。
{hoge: 1, piyo: 2}.merge!({fuga: 3}) #=> {:hoge=>1, :piyo=>2, :fuga=>3}
同名keyがあった場合、上書きします。
この点に気をつけないと意図しない挙動をする恐れがあるので気をつけてください。
{hoge: 1, piyo: 2}.merge!({fuga: 3, piyo: 4}) #=> {:hoge=>1, :piyo=>4, :fuga=>3}
前の記事で扱ったassert_valid_keysと組み合わせる事で
安全確実に処理本体へhashを渡す事ができます。
たとえばこんな感じ
def method(options={}) options.assert_valid_keys(:foo, :bar) default_params = {foo: 1, bar: 2} tmp = get_outer_params default_params.merge!(tmp) method_body end private def get_outer_params ##他所からparamを毟ってくる。I18とか。 end def method_body ##受け取ったoptionsで何かする end