在Rails中采集和采集有什么区别?
这里有两个示例代码。
第一个与collect : 
 User.first.gifts.collect(&:id) 
 第二个pluck : 
 User.first.gifts.pluck(:id) 
他们在表演或其他方面有什么区别吗?
  pluck是在数据库级别。 它只会查询特定的字段。  看到这个 
当你这样做时:
  User.first.gifts.collect(&:id) 
 你有加载所有领域的对象,你只需要得到的id感谢基于Enumerable的方法。 
所以:
- 
如果你只需要Rails 4的 id,使用ids:User.first.gifts.ids
- 
如果你只需要Rails 4的一些字段,可以使用 User.first.gifts.pluck(:id, :name, ...):User.first.gifts.pluck(:id, :name, ...)
- 
如果您只需要Rails 3的一个字段,请使用 User.first.gifts.pluck(:id):User.first.gifts.pluck(:id)
- 
如果你需要所有的领域,使用 collect
- 
如果你需要Rails 4的某些领域,仍然使用 pluck
- 
如果你需要Rails 3的某些领域,请使用 select和collect
 是。  根据Rails指南 , pluck直接将数据库结果转换为array ,而不构buildActiveRecord对象。 这意味着对于大型或经常运行的查询来说性能更好。 
 除了@ apneadiving的答案, pluck可以采取单个和多个列名作为参数: 
 Client.pluck(:id, :name) # SELECT clients.id, clients.name FROM clients # => [[1, 'David'], [2, 'Jeremy'], [3, 'Jose']] 
基本和主要区别是Pluck适用于数据库级别并收集所有数据,然后在您需要所有logging时使用collect收集所有数据然后返回logging,当less数字段使用pluck时