如何使用ruby中的sort_by按字母顺序对数组进行排序?

Bri*_*ich 29 ruby arrays sorting ruby-on-rails enumerable

我有一系列的会员资格.每个会员都是一个团体.我需要按照组的名称对这个成员数组进行排序.我尝试了很多不同的方法,最新的方法是:

@memberships.sort_by! { |m| m.group.name }
Run Code Online (Sandbox Code Playgroud)

但是,这并没有按名称排序.它似乎是随机排序数组.

  • 成员资格belongs_to:group
  • 集团has_many:会员资格

@memberships等于:

[
  {
  id: 2141,
  user_id: 491,
  group_id: 271,
  member_type: "member",
    group: {
      id: 271,
      name: "Derek's",
      privacy: "open",
      bio_image_url: "/bio_images/medium/missing.png?1340285189",
      member_count: 1,
      upcoming_checkins_count: 0
    }
  },
  {
  id: 2201,
  user_id: 221,
  group_id: 291,
  member_type: "member",
    group: {
      id: 291,
      name: "Rounded Developement",
      privacy: "closed",
      bio_image_url: "/groups/medium/291/bioimage.jpg?1340736175",
      member_count: 7,
      upcoming_checkins_count: 0
   }
}
]
Run Code Online (Sandbox Code Playgroud)

注意:这确实有效 - > @ memberships.sort_by!{| m | m.group.id}

它将基于group.id对数组进行排序,所以它可能与按字母顺序排序有关吗?

任何帮助将非常感激.

Bri*_*ich 70

哇,经过这么长时间的努力,我意识到我的问题很简单.我按group.name进行排序,但是一些组名是大写的,有些是较低的,这就是把它全部抛弃了.将所有内容转换为downcase运行良好.

@memberships.sort_by!{ |m| m.group.name.downcase }
Run Code Online (Sandbox Code Playgroud)