如何将db中缺少的params字段合并到rails

时间:2017-03-20 13:05:19

标签: ruby-on-rails ruby

让我们说应用程序收到像这样的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一个new hash所有字段的组合(params + missing_fields_from_db)。因此,如果params有一些缺失键,它将从模型中添加到新哈希。

像这样:

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

ruby || rails中是否有可用的方法?

谢谢

1 个答案:

答案 0 :(得分: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。