Rails 5 получает конкретное поле / значение из таблицы - PullRequest
0 голосов
/ 26 января 2019

У меня есть таблица с именем group.Я хочу, чтобы этот метод возвращал только содержимое поля идентификатора соответствующей записи.На данный момент он возвращает идентификатор активной записи объекта.

def get_group_name(group_id)
    Group.select([:name]).where("id = ?", group_id)
end

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Это даст вам только название группы.

def get_group_name(group_id)
  Group.where(id: group_id).limit(1).pluck(:name).first
end

Он запустит этот запрос:

SELECT name
  FROM groups
 WHERE id = ?
 LIMIT 1;

Примечание: будьте осторожны с тем, что вы делаете. Каждый раз, когда у вас есть метод для получения значения отдельного поля, хотя иногда он может быть более эффективным, его легко использовать неправильно. Если вы перебираете коллекцию идентификаторов групп, пытаясь захватить все имена, то вам лучше будет выполнить 1 запрос заранее для всех имен, а не 1 для идентификатора группы на странице. Так что просто следите за своей консолью и обращайте внимание на запросы, которые вы выполняете.

Кроме того, если вы просматриваете коллекцию, вы можете просмотреть includes для ваших запросов ActiveRecord, чтобы включить данные группы в предыдущий запрос. Вы можете сравнить все это, чтобы выяснить, что является самым быстрым для вашего варианта использования.

0 голосов
/ 26 января 2019

Я думаю, что вы можете сделать проще с find

def get_group_name(group_id)
  Group.find(group_id).name
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...