редактировать 2
Если вы наткнетесь на это, проверьте оба ответа, так как я бы сейчас использовал для этого pluck
У меня есть довольно большой пользовательский набор данных, который я хотел бы вернуть, чтобы он отображался как json. Одна часть:
l=Location.find(row.id)
tmp[row.id]=l
но я бы хотел сделать что-то вроде:
l=Location.find(row.id).select("name, website, city")
tmp[row.id]=l
но, похоже, это не работает. Как мне заставить это работать?
Спасибо
отредактируйте 1 в качестве
альтернативы, есть ли способ передать массив только тех атрибутов, которые я хочу включить?
:limit
должен это сделать, или:first
или:last
или любой другой , в зависимости от того, что вы хотите. Справочный документ, на который я ссылаюсь, расскажет вам, как все это сделать.сорвать (имя_столбца)
Этот метод предназначен для выполнения выбора по одному столбцу в качестве прямого SQL-запроса. Возвращает массив со значениями указанного имени столбца. Значения имеют тот же тип данных, что и столбец.
Примеры:
Person.pluck(:id) # SELECT people.id FROM people Person.uniq.pluck(:role) # SELECT DISTINCT role FROM people Person.where(:confirmed => true).limit(5).pluck(:id)
см. http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck
Он представляет собой рельсы начиная с версии 3.2 и принимает только одну колонку. В рельсах 4 он принимает несколько столбцов
источник
Location.select([:name, :website, :city])
если вы передадите ему массивМой ответ приходит довольно поздно, потому что я довольно новый разработчик. Вот что вы можете сделать:
Location.select(:name, :website, :city).find(row.id)
Кстати, это Rails 4
источник