我在Rails模型中有一个SQL查询,它使用一个对象数组进行响应。每个对象都有一个名为points的属性,该属性具有一个值。
但是更好的方法是,查询只返回一个points数组,比如[10,15,5],而不是[object,object,object],后者要求将点提取到另一个数组中才有用。
模型文件
LAST_3_SELECT = "
SELECT
(
(data.ap / (data.apa * 1.0))
+
(data.vp / (data.vpa * 1.0))
)
/ 2 * 1.5 * data.level
AS points
FROM data
WHERE data.user_id = ?
GROUP BY data.id
ORDER BY data.created_at DESC
LIMIT 3
"
def self.last_3(user_id)
connection.select_all(sanitize_sql_array( [LAST_3_SELECT, user_id]), "last-3")
end这可以在查询本身中执行,还是有必要在查询之外的方法中执行?
我没有在Rails方法中编写原始SQL查询的经验,因此非常希望提供任何指导。
发布于 2016-05-08 05:34:57
您可以使用拔毛将点获取到数组中
def self.last_3(user_id)
connection.select_all(sanitize_sql_array( [LAST_3_SELECT, user_id]), "last-3").pluck(:points)
end这里,points是要拔出的列名
https://stackoverflow.com/questions/37096515
复制相似问题