我的问题纯粹是基于这三种方法对性能的影响,我需要知道哪一种方法是当前任务的最佳方法。
我需要为一组特定的记录呈现json。
我目前使用的方法是
result = User.all.map{ |u| { name: u.name, id: u.id } }
正如您所知,这将循环遍历Activerecord对象,对于一个大的记录集,这将导致非常低的性能。
另一种方法是使用拔毛。
result = User.all.pluck(:name,:id).map{ |u| { name: u[0], id: u[1] } }
性能可能会更好,但是代码看起来很臭。
如果我们重写as_json,使其只包含必要的参数,那么as_json也可以实现同样的效果,但是我需要知道这是否也会遍历activereord对象。
如果有任何其他方法可以给予更好的性能,请随意回答。
2条答案
按热度按时间b4lqfgs41#
您可以只用途:
它的性能可能不如你的
pluck(...).map
版本,这确实是非常低的水平。但它比你的all.map
版本更快,更优雅(又名更容易阅读)。ppcbkaq52#