Ruby on rails Ruby:将参数散列添加到函数的参数:寻找更干净的解决方案
我需要调用一个函数,它的参数是散列。对于它的参数,我有一个散列和一个需要合并的属性。为此,我使用以下正确的方法:Ruby on rails Ruby:将参数散列添加到函数的参数:寻找更干净的解决方案,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我需要调用一个函数,它的参数是散列。对于它的参数,我有一个散列和一个需要合并的属性。为此,我使用以下正确的方法: paramsHash={:att1=> "1", :att2=>"2"} #this is obtained from a function result=MyClass.where({:att0=> "0"}.merge(paramsHash)) 如前所述,这是可行的,没有问题。我的问题是,有没有一个很好的ruby奇幻的方法?差不多 paramsHash={:a
paramsHash={:att1=> "1", :att2=>"2"} #this is obtained from a function
result=MyClass.where({:att0=> "0"}.merge(paramsHash))
如前所述,这是可行的,没有问题。我的问题是,有没有一个很好的ruby奇幻的方法?差不多
paramsHash={:att1=> "1", :att2=>"2"} #this is obtained from a function
result=MyClass.where(:att0=> "0", paramsHash.as_params)
谢谢没有比“合并”更有趣的方法了,我只想用另一种方法来写,这样你就可以松开大括号了:
result = MyClass.where(params_hash.merge(att0: "0"))
这是我能想到的编写代码的最奇特的方式。但是,它确实改变了散列合并的方式,这对您在问题中提供的代码没有影响,但是如果两个散列中都存在相同的键,则可能会产生影响
让您的红宝石爱好者更喜欢的其他东西:
- 在ruby中,局部变量通常使用带下划线的表示法而不是camelCase,因此
而不是params_hash
paramsHash
- 赋值运算符、被赋值变量和赋值之间的空格很常见:
而不是result='this'
result='this'
- 与散列中的键值对相同:
,而不是ruby 1.9中的{:this=>'是散列'}
,您甚至可以执行{:this=>'是散列'}
,这是ruby 1.9符号作为散列键的表示法{this:'是散列'}
- 一些红宝石爱好者喜欢释放可选的大括号,如果您愿意,您也可以这样做:
或result=MyClass.where参数_hash.merge(att0:“0”)
result=MyClass.where(params_hash.merge att0:“0”)