ruby Rails活动记录:贴图与拔毛与as_json

vwhgwdsa  于 2023-02-03  发布在  Ruby
关注(0)|答案(2)|浏览(116)

我的问题纯粹是基于这三种方法对性能的影响,我需要知道哪一种方法是当前任务的最佳方法。
我需要为一组特定的记录呈现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对象。
如果有任何其他方法可以给予更好的性能,请随意回答。

b4lqfgs4

b4lqfgs41#

您可以只用途:

User.select(:id, :name).to_json

它的性能可能不如你的pluck(...).map版本,这确实是非常低的水平。但它比你的all.map版本更快,更优雅(又名更容易阅读)。

ppcbkaq5

ppcbkaq52#

result = User.all.as_json(only: [:name, :id])

相关问题