如果密钥匹配rails,则从哈希中删除值

时间:2016-12-23 06:03:38

标签: ruby-on-rails ruby hash

我看到很多答案都是删除任何有list.stream().distinct().count() == list.size() nil值的密钥,但这不是我想要的。

我有这样的哈希

""

我只想删除hash的密码属性,如果它为空,{"firstname"=>"Jie", "lastname"=>"Pton", "email"=>"jami4@yahoo.com", "country_id"=>"1", "payment_method"=>"0", "insight_id"=>"", "password"=>""} 为空

4 个答案:

答案 0 :(得分:3)

更通用的解决方案:对于作为输入提供的哈希(我假设它是 this._http.post('/list/items/update?itemId=' + itemId + "&done=" + done, null) .subscribe(); ,所以我们称之为params)以及空白时要删除的字段列表:

params

答案 1 :(得分:1)

hash.delete('password') if hash['password'].blank?

答案 2 :(得分:0)

您也可以使用此解决方案:

hash.reject { |k,v| v.nil? || v.empty? }

答案 3 :(得分:0)

您可以使用:

hash.reject{|k,v| k == 'password' && (v.nil? || v.empty?)}

或者如果您想从原始哈希中删除"password"密钥,可以使用"!"

例如。 hash.reject!{|k,v| k == 'password' && (v.nil? || v.empty?)}