Fli*_*lip 2 ruby arrays 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"]
Run Code Online (Sandbox Code Playgroud)
但是,更优雅和/或更少的代码必须有可能吗?
你正在寻找的方法是采摘
Language.pluck(:code)
Run Code Online (Sandbox Code Playgroud)
即使您不使用pluck,您也可以通过更改以下内容来显着改进代码:
code_array = []
Language.all.each do |lang|
code_array<<lang.code
end
Run Code Online (Sandbox Code Playgroud)
至
Language.all.map(&:code)
Run Code Online (Sandbox Code Playgroud)
您的代码迭代所有结果,获取字段code并将其推送到数组,然后移动到下一个元素.将函数映射到集合或数组通常更有效.
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |