Ruby on rails 使用导轨';s Model.update方法,而不在哈希中提供ID

Ruby on rails 使用导轨';s Model.update方法,而不在哈希中提供ID,ruby-on-rails,Ruby On Rails,因此,我知道您可以使用Model.update(ID,values)更新某些模型,其中ids表示ID,而values表示实际更改。我也知道你可以传入一个散列,比如{1=>{column\u name:“new value”},2=>{column\u name:“new value”},效果很好 但是,如果我想使用另一个列,比如uuid,而不是id,该怎么办?我是否可以使用.update方法执行类似Model.update(uuid:hash.keys,hash.values) 似乎我不能用这个

因此,我知道您可以使用
Model.update(ID,values)
更新某些模型,其中
ids
表示ID,而
values
表示实际更改。我也知道你可以传入一个散列,比如
{1=>{column\u name:“new value”},2=>{column\u 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>)>
[2]pry(#)>test={“b7d720f984abeda37836d07b2147560ce06fb4d7e30fe8d59c1fe610cb440bbf”=>{:协议=>“udp”,:端口=>5}
=>{“b7d720f984abeda37836d07b2147560ce06fb4d7e30fe8d59c1fe610cb440bbf”=>{:协议=>“udp”,“端口=>5}
[3] pry(#)>Port.update(uuid:test.keys,test.values)
SyntaxError:意外“'),应为=>
…e(uuid:test.keys,test.values)
...                              ^
[3] 撬动(#)>

正如塞巴斯蒂安·帕尔马所说,您可以在
更新
操作之前使用
where
子句来执行此操作,如下所示:

Port.where(uuid:test.keys).更新(test.values)

关于
端口。在哪里(…)。更新(…)
?谢谢@SebastianPalma。这就成功了。只需检查一下,但确认
where(…).update(…)
只能将所有选定项设置为相同的值。不完全确定这是否适合你?您的示例似乎建议值可以不同(哈希数据结构允许),而它们是相同的。显然,如果
update
接收到一个数组,就无法知道哪个选定项应该获得哪些值。