在rails中,您是否能够通过评估SQL函数来更新记录的属性?
MySQL表
| time_started | time_to_execute |
|---------------------------------------|
| 2015-10-28 14:13:58 | NULL |
我想做什么:
update table set time_to_execute = TIME_TO_SEC(TIMEDIFF(NOW(), time_started))
通过模型。
我尝试使用常见的属性更新方法无效。
c.update_attribute(:time_to_execute, 'TIME_TO_SEC(TIMEDIFF(NOW(), time_started))')
c.update({:time_to_execute => 'TIME_TO_SEC(TIMEDIFF(NOW(), time_started))'})
我知道我可以完成执行任意SQL,或者计算两个DateTime
ruby对象之间的差异,但我想知道这是否可以通过模型方法实现。
答案 0 :(得分:3)
您可以使用c.class.where(id: c.id).update_all("time_to_execute = TIME_TO_SEC(TIMEDIFF(NOW(), time_started))")
执行此操作
c.class
请注意,您可以将c.class.connection.execute "update table set time_to_execute = TIME_TO_SEC(TIMEDIFF(NOW(), time_started)) WHERE id = #{ c.id }"
替换为模型的实际类名(当前未在答案中显示)。
{{1}}