返回值数组而不是Rails中SQL查询的对象数组

时间:2016-05-08 05:23:02

标签: mysql ruby-on-rails

我在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查询的经验,因此非常感谢任何指导。

1 个答案:

答案 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摘取

的列名