我想在地图内的一个表的一行上得到多个列的总和,但sum只适用于这样的模型选择:
columns = 'col1 + col2 + col3'
Model.all.map do |model|
Model.where(:id => model.id).sum(columns)
end
我正在尝试这样做,所以我不必再次访问数据库,显然它不起作用:
columns = 'col1 + col2 + col3'
Model.all.map do |model|
model.sum(columns)
end
关于如何做到这一点的任何想法或窍门?请注意,必须使用columns
,因为columns
的值会根据多个条件发生变化。
答案 0 :(得分:2)
您不能在数据库外部使用SQL查询。但是,如果我理解你的问题,那么这样的事情应该有效:
columns = 'col1 + col2 + col3'
Model.select("*, #{columns} AS my_sum").map do |model|
model.my_sum # the calculated sum
end
确保正确转义自定义SQL查询。