我在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查询的经验,因此非常感谢任何指导。
答案 0 :(得分:3)
您可以使用pluck将点数转换为数组
def self.last_3(user_id)
connection.select_all(sanitize_sql_array( [LAST_3_SELECT, user_id]), "last-3").pluck(:points)
end
此处points
是摘取