Ответ 1
Немного более аккуратное решение:
Product.where(:colour => 'blue').pluck(:id)
Я ищу простой/быстрый способ получения массива идентификаторов из отношения Active Record.
В настоящее время у меня есть:
product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id}
Но это беспорядочно и требует карты.
Что-то вроде этого будет более холодным:
product_ids = Product.where(:colour => 'blue').ids
Любые идеи?
Спасибо:)
Немного более аккуратное решение:
Product.where(:colour => 'blue').pluck(:id)
Читали через рельсы 4 документа, и похоже, что они поддерживают метод ids
, который, как я сказал, будет круто в вопросе сейчас.
http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-ids
Приятно знать, что команда читает мой разум:)
Чтобы использовать предыдущие ответы, если вы работаете через ассоциацию, вы можете просто добавить _ids
к запросу.
Итак, в вашем примере, если a Supplier
has_many
Products
, то:
supplier.product_ids
вернет массив идентификаторов продуктов, принадлежащих поставщику.