Joh*_*urr 5 sql ruby-on-rails-3 update-all
这与以下内容有些模糊: 如何更新表格中的所有日期 但是只有当你眯着眼睛才真的很难.
第1部分 - 我知道SQL可以根据涉及同一个表上其他列的公式更新表上的一列.它可以通过一个简单的SQL行完成,如下所示:
UPDATE thieving_prices SET current_price = (1 + usury_rate) * current_price;
Run Code Online (Sandbox Code Playgroud)
现在所有的价格都被各种相关的恶劣价格所提高.
第2部分 - 我也知道Rails 3提供了一个名为update_all的神奇魔法,它使用单行SQL创建UPDATE查询:
ThievingPrice.update_all(:current_price = 35000.00)
Run Code Online (Sandbox Code Playgroud)
产生:
UPDATE thieving_prices SET current_price = 35000.00;
Run Code Online (Sandbox Code Playgroud)
现在所有产品的价格都相同.在这个偷偷摸摸的商店里非常无用.
第3部分 - 所有这些价格都有自己稳定的增长率,并且需要在Rails 3中编写优雅的代码行来实现它.
和行:
ThievingPrice.update_all(:current_price => (1 + :usury_rate) * :current_price)
Run Code Online (Sandbox Code Playgroud)
不起作用.关于括号,括号或括号的任何句法变异也没有 - 就我的实验所表明的那样.当然,其他人也需要这样的建筑.我不想回到每个块的极其缓慢和资源浪费:
ThievingPrice.each do |tp|
new_price = tp.current_price * (1 + tp.usury_rate)
tp.update_attribute(:current_price => new_price)
end
Run Code Online (Sandbox Code Playgroud)
当完成我的受害者顾客离开商店.我有什么选择?
试试ThievingPrice.update_all("current_price = (1 + ?) * current_price" , :usury_rate)
.它应该取参数,并根据当前正在更新的对象将当前价格乘以该数量.
归档时间: |
|
查看次数: |
2687 次 |
最近记录: |