因此,我知道您可以使用Model.update(ids, values)
更新某些模型,其中ids
代表ID,values
代表实际更改。我也了解您可以传入一个哈希,例如{1 => {column_name: "new value"}, 2 => {column_name: "new value"}}
,它很好用。
但是,如果我想使用uuid
之类的其他列而不是ID,该怎么办?我可以使用.update
方法来达到类似Model.update(uuid: hash.keys, hash.values)
的作用吗?
似乎无法使用此方法执行此操作,但是还有另一种方法可以执行此操作,这样就不必遍历长数组(包含数千个)中的每个键和值键和值)
这是我尝试实现自己想做的事情时发生的事情:
[2] pry(#<MyWorker>)> test = {"b7d720f984abeda37836d07b2147560ce06fb4d7e30fe8d59c1fe610cb440bbf" => {:protocol => "udp", :port => 5}}
=> {"b7d720f984abeda37836d07b2147560ce06fb4d7e30fe8d59c1fe610cb440bbf"=>{:protocol=>"udp", :port=>5}}
[3] pry(#<MyWorker>)> Port.update(uuid: test.keys, test.values)
SyntaxError: unexpected ')', expecting =>
...e(uuid: test.keys, test.values)
... ^
[3] pry(#<MyWorker>)>
答案 0 :(得分:1)
正如塞巴斯蒂安·帕尔玛(Sebastian Palma)所说,您可以在where
动作之前使用update
子句来做到这一点,就像这样:
Port.where(uuid: test.keys).update(test.values)