2017-03-20 69 views
1

params散列,缺少PARAMS領域可以說應用臨危設置了一個param散列這樣如何合併從數據庫中軌

Parameters: {"utf8"=>"✓", "authenticity_token"=>"sjfsj", "user"=>{"name"=>"Joe", "mobile"=>"12345678"}, "commit"=>"Save Changes"} 

,這是user模型

{name: "value", mobile: "value", email: "value", many_others: "other_values" } 

什麼我試圖要做的是create a new hash合併所有字段(params + missing_fields_from_db)。所以如果參數有一些缺失的鍵,它將從模型中添加到新的散列中。

像這樣:

{name: "Joe", mobile: "12345678", email: "value", many_others: "other_values" } 

有沒有一種方法可以在ruby || rails

謝謝

回答

4

你正在尋找一個Hash#mergeHash#reverse_merge。區別:

a = { foo: 1, bar: 2, baf: 3 } 
b = { foo: 2, bar: 1, baz: 1 } 
a.merge(b) 
#=> {:foo=>2, :bar=>1, :baf=>3, :baz=>1} 
a.reverse_merge(b) 
#=> {:foo=>1, :bar=>2, :baz=>1, :baf=>3} 

注意,這Hash#merge是一個純Ruby方法,Hash#reverse_merge來自Rails的。

+0

所以'reverse_merge'是防止覆蓋現有參數散列權的一個嗎?如果在params – Abhilash

+0

@Ahhilash上​​被調用,是的,你是對的。 – Ilya

+0

謝謝你的好解釋。 – Abhilash