Rails Activerecord:Map vs pluck vs as_json

时间:2016-03-20 16:37:55

标签: ruby-on-rails ruby activerecord

我的问题纯粹基于3种方法的性能影响。我需要知道哪种方法最适合手头的任务。

我需要为特定的一组记录渲染json。

我目前使用的方法是

Familial Non-VHL Clear Cell Renal Cancer;Birt-Hogg-Dub-> Syndrome

如您所知,这将循环通过Activerecord对象,这对于大量记录的性能非常低。

替代方法是使用pluck。

result = User.all.map{ |u| { name: u.name, id: u.id } }

性能可能要好得多,但代码看起来很臭。

如果我们覆盖as_json只包含必要的参数,那么使用as_json可以实现同样的效果,但我需要知道这是否也会遍历activerecord对象。

如果有任何其他方法可以提供更好的表现,请随意说明。

1 个答案:

答案 0 :(得分:2)

你可以使用:

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

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