gpt4 book ai didi

sql - Rails 3 update_all 使用已包含在每个记录中的表中的数据

转载 作者:行者123 更新时间:2023-12-04 17:55:13 27 4
gpt4 key购买 nike

这与以下内容隐约相关:
How to Update all Dates in a Table
但前提是你真的用力眯眼。

第 1 部分 - 我知道 SQL 可以根据涉及同一表中其他列的公式更新表中的一列。并且可以使用一条简单的 SQL 行来完成,如下所示:

UPDATE thieving_prices SET current_price = (1 + usury_rate) * current_price;

现在,所有价格都因各种相关的不良率而上涨。

第 2 部分 - 我还知道 Rails 3 提供了一种奇妙的魔法,称为 update_all,它使用单行 SQL 创建一个 UPDATE 查询:
ThievingPrice.update_all(:current_price = 35000.00)

产生:
UPDATE thieving_prices SET current_price = 35000.00;

现在所有产品的所有价格都相同。在这家鬼鬼祟祟的商店里毫无用处。

第 3 部分 - 所有这些价格都有自己稳定的增长率,并且没有什么方法可以在 Rails 3 中编写一行优雅的代码来实现它。

和线:
ThievingPrice.update_all(:current_price => (1 + :usury_rate) * :current_price)

不起作用。也没有任何涉及括号、大括号或方括号的句法变化——就我的实验而言。当然,其他人也遇到过对这种结构的需求。我不想回到令人难以置信的缓慢和浪费资源的每个块上:
ThievingPrice.each do |tp|
new_price = tp.current_price * (1 + tp.usury_rate)
tp.update_attribute(:current_price => new_price)
end

当我的受害者完成时,顾客已经离开了商店。我有哪些选择?

最佳答案

试试 ThievingPrice.update_all("current_price = (1 + ?) * current_price" , :usury_rate) .它应该根据当前正在更新的对象获取参数并将当前价格乘以该数量。

关于sql - Rails 3 update_all 使用已包含在每个记录中的表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510005/

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