Rails: получение значения столбца из запроса - PullRequest
0 голосов
/ 12 октября 2011

Похоже, что он должен быть в состоянии взглянуть на простое учебное пособие или найти ответ в быстром Google, но я не могу ...

codes = PartnerCode.find_by_sql "SELECT * from partner_codes where product = 'SPANMEX' and isused = 'false' limit 1"

Мне нужен столбец с именем code, мне нужно только значение. Перепробовал все, что кажется логичным. Сводит меня с ума, потому что все, что я нахожу, показывает пример без ссылки на фактические возвращенные значения

Так что же возвращает объект? Массив, хеш, ActiveRecord? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2015

Для Rails 4+ (и немного раньше, я думаю), использовать pluck:

Partner.where(conditions).pluck :code
> ["code1", "code2", "code3"]

карта неэффективна, так как она сначала выберет все столбцы, а также не сможет оптимизироватьзапрос.

0 голосов
/ 12 октября 2011

Вам нужен этот

Partner.where( conditions ).map(&:code)

- сокращение от

Partner.where( conditions ).map{|p| p.code}

PS

, если вы часто сталкиваетесь с таким случаем, вам понравится этот камень valium by ernie

это дает вам прекрасный способ получить значения без создания экземпляра объекта activerecord, например

Partner.where( conditions ).value_of :code

UPDATED:

, если вам нужен доступ к какому-либо атрибутупосле этой записи обновления

сначала сохраните экземпляр в некоторой переменной:

instance=Partner.where( conditions ).first

, затем вы можете получить доступ к таким атрибутам, как instance.code, и обновить некоторый атрибут

instance.update_attribute || instance.update_attributes

проверьте документацию на api.rubyonrails.org для подробностей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...