有没有更好的方法在 Ruby Activerecord(不是 Rails)中对我在这里所做的进行多次更新?我不想遍历所有记录并处理 if 或 case。
# reset all color fields to null
Signal.where.not(color: nil).update_all("color = null")
# set color field based on status
Signal.where(status: CONFIG.status.step3).update_all("color = 'o'")
Signal.where(status: CONFIG.status.step4).update_all("color = 'r'")
Signal.where(status: CONFIG.status.manual).update_all("color = 'y'")
最佳答案
也许你可以做得更多DRY并在 update_all
中对参数使用哈希样式而不是字符串:
# reset all color fields to null
Signal.where.not(color: nil).update_all(color: nil)
# set color field based on status
color_dependencies = {
CONFIG.status.step3 => 'o',
CONFIG.status.step4 => 'r',
CONFIG.status.manual => 'y'
}
color_dependencies.each do |status, color|
Signal.where(status: status).update_all(color: color)
end
关于ruby - Ruby Activerecord 中的组合更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456458/