ruby-on-railsrubyrails-activerecord

What is the difference between pluck and collect in Rails?


Here are two sample codes.

First one with collect:

User.first.gifts.collect(&:id)

Second one with pluck:

User.first.gifts.pluck(:id)

Is there any difference between them in performance or something else?


Solution

  • 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: