Подтвердить что ты не робот

Rails Active Record - получить массив идентификаторов из отношения

Я ищу простой/быстрый способ получения массива идентификаторов из отношения Active Record.

В настоящее время у меня есть:

product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id}

Но это беспорядочно и требует карты.

Что-то вроде этого будет более холодным:

product_ids = Product.where(:colour => 'blue').ids

Любые идеи?

Спасибо:)

4b9b3361

Ответ 1

Немного более аккуратное решение:

Product.where(:colour => 'blue').pluck(:id)

Ответ 2

Читали через рельсы 4 документа, и похоже, что они поддерживают метод ids, который, как я сказал, будет круто в вопросе сейчас.

http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-ids

Приятно знать, что команда читает мой разум:)

Ответ 3

Чтобы использовать предыдущие ответы, если вы работаете через ассоциацию, вы можете просто добавить _ids к запросу.

Итак, в вашем примере, если a Supplier has_many Products, то:

supplier.product_ids

вернет массив идентификаторов продуктов, принадлежащих поставщику.