gpt4 book ai didi

sql - ActiveRecord Hash 形式表示 update_all ("prio = prio + 200")

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:57 24 4
gpt4 key购买 nike

我想通过 update_all 改变很多记录的属性。用户应该能够相对更改优先级(记录 1 的优先级为 0,记录 2 的优先级为 200,用户可以选择给他们 +200,这样他们最终分别得到优先级 200 和 400)。同时更改其他列。rails 中的首选方式是

Model.update_all(name: name)

但是对于 prio 我现在只有我知道的字符串形式 -

Model.update_all("prio = prio + #{change_of_prio}")

如何将后者改成rails的Hash-Form?或者,我如何在一个 update_all 语句中同时执行这两项操作(在不失去 rails 在使用 Hash 调用它时进行必要转义的优势的情况下)?

最佳答案

你必须使用数组表示法。这会起作用:

Model.update_all(["prio = prio + :change_of_prio, name = :name", {change_of_prio: 200, name: "foo"}])
# UPDATE `models` SET prio = prio + 200, name = 'foo'

:change_of_prio:name 是指代哈希中相应值的命名占位符。 Rails 会为您处理转义。

关于sql - ActiveRecord Hash 形式表示 update_all ("prio = prio + 200"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21454792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com