2016-12-23 51 views
1

我已經看到很多答案,因爲刪除了任何值爲nil""的密鑰,但這不是我想要的。如果密鑰匹配的話,從哈希中刪除一個值

我有這樣

{"firstname"=>"Jie", 
"lastname"=>"Pton", 
"email"=>"[email protected]", 
"country_id"=>"1", 
"payment_method"=>"0", 
"insight_id"=>"", 
"password"=>""} 

散,我只希望如果其空從哈希刪除密碼屬性,NOT ALL這是空

+1

'input.delete('password')if input ['password']。empty?' – mudasobwa

回答

2

更通用的解決方案:爲亂碼作爲輸入給出(我假設它是params,所以我們將其稱爲params)以及在空時要刪除的字段列表:

TO_REMOVE_EMPTY = %w|password| 
params.delete_if { |k, v| TO_REMOVE_EMPTY.include?(k) && v.empty? } 
+0

動態常量賦值TO_REMOVE_EMPTY =%w | password | ^我得到了這個錯誤 – ijunaidfarooq

+0

把這個名字變成了var。 – mudasobwa

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

非常感謝回答:) – ijunaidfarooq

0

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

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

您可以使用:

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

,或者如果你想刪除由原來的哈希"password"鍵就可以使用"!"

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

相關問題