pluck is on the db level. It will only query the particular field. See this.
When you do:
User.first.gifts.collect(&:id)
You have objects with all fields loaded and you simply get the id thanks to the method based on Enumerable.
So:
-
if you only need the
idwith Rails 4, useids:User.first.gifts.ids -
if you only need some fields with Rails 4, use
pluck:User.first.gifts.pluck(:id, :name, ...) -
if you only need one field with Rails 3, use
pluck:User.first.gifts.pluck(:id) -
if you need all fields, use
collect -
if you need some fields with Rails 4, still use
pluck -
if you need some fields with Rails 3, use
selectandcollect