使用字符串数组选择带有AR和Rails的列

时间:2019-02-11 08:07:21

标签: ruby-on-rails activerecord

我有全套项目-["A", "B", "C", "D", "E"],对于某个实体,我只需要选择其中的一个子集。我将此信息保留为每个实体items = ["A", "C", "D"]的数组。

每个项目都是表中的一列。我想要的是使用数组为给定实体只选择数组中的那些列。

例如,如果我有

object.items = ["A", "C", "D"]

我想执行此SQL查询

SELECT A, C, D FROM table WHERE...

但是我需要用ActiveRecords完成。像这样:

Entity.select(columns: items)..

当然,这只是一个伪代码。我不知道如何使用AR实际执行此操作,但是我认为有很大的机会构建一些可以执行这种选择的东西?

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作

Entity.select(*items)

如下,

array = ['id', 'client_name']

Event.select(*array)
  Event Load (1.6ms)  SELECT `events`.`id`, `events`.`client_name` FROM `events`

答案 1 :(得分:1)

您可以做到

Entity.select(items.map(&:to_sym))

但是请确保项目获得所有正确的列名。