我有全套项目-["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实际执行此操作,但是我认为有很大的机会构建一些可以执行这种选择的东西?
答案 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))
但是请确保项目获得所有正确的列名。