我有以下一行代码。
<% map = options_for_select(User.all.map {|u| [u.first_name+" "+u.last_name, u.id]}) %>
这段代码提取了用户的名字和姓氏,并将其提交到表单中。现在我添加了一些用户,他们并不按照字母顺序排序。我该如何通过名字将这个映射排序?
name
属性上有索引,它已经知道顺序(据我所知,索引总是排序的,否则就没什么意义了),因此它可以按排序顺序从磁盘检索数据并返回。你的哈希表必须通过将所有元素相互比较来进行排序,因此速度应该会慢一些。在小量数据上可能不会注意到,但如果可能的话,应该优先在数据库层面进行排序。不过,如果没有索引的情况可能不太重要。 - Daniël Knippers