这与以下内容模糊相关: 如何更新表格中的所有日期 但前提是你真的眯着眼睛。
第 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
到完成时,我的受害者顾客已经离开了商店。我有哪些选择?