从db列创建数组的最快方法是什么?

时间:2015-09-01 13:35:18

标签: arrays ruby ruby-on-rails-4

我需要将ActiveRecord模型的数据库列的所有元素放入数组中。我这样做:

code_array = []
Language.all.each do |lang|
  code_array<<lang.code
end

=> ["af", "sq", "ar", "hy", "az", "eu", "be", "bn", "bs", "bg", "ca", "ceb", "ny", "zh-CN", "zh-TW", "hr", "cs", "da", "nl", "en", "eo", "et", "tl", "fi", "fr", "gl", "ka", "de", "el", "gu", "ht", "ha", "iw", "hi", "hmn", "hu", "is", "ig", "id", "ga", "it", "ja", "jw", "kn", "kk", "km", "ko", "lo", "la", "lv", "lt", "mk", "mg", "ms", "ml", "mt", "mi", "mr", "mn", "my", "ne", "no", "fa", "pl", "pt", "ma", "ro", "ru", "sr", "st", "si", "sk", "sl", "so", "es", "su", "sw", "sv", "tg", "ta", "te", "th", "tr", "uk", "ur", "uz", "vi", "cy", "yi", "yo", "zu"]

但是这可以用更优雅和/或更少的代码来实现吗?

1 个答案:

答案 0 :(得分:6)

您要查找的方法是pluck

Language.pluck(:code)

即使你没有使用pluck,你也可以通过更改来显着改善你的代码:

code_array = []
Language.all.each do |lang|
  code_array<<lang.code
end

Language.all.map(&:code)

您的代码正在迭代所有结果,取字段code并将其推送到数组,然后移动到下一个元素。将函数映射到集合或数组通常更有效。