Используйте массив строк для выбора столбцов с AR и Rails - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть полный набор предметов - ["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 голосов
/ 11 февраля 2019

Вы можете сделать это

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

Но убедитесь, что элементы получают все правильные имена столбцов.

0 голосов
/ 11 февраля 2019

Вы можете сделать, как показано ниже,

Entity.select(*items)

Как показано ниже,

array = ['id', 'client_name']

Event.select(*array)
  Event Load (1.6ms)  SELECT `events`.`id`, `events`.`client_name` FROM `events`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...