How do you sort an array alphabetically using sort_by in ruby?

arrays, enumerable, ruby, ruby-on-rails, sorting

Solution

Wow, after struggling with this for an extremely long time, I realized my problem was a simple one. I was sorting by group.name but some of the group names were uppercase and some were lower, which was throwing it all off. Converting everything to downcase worked well.

@memberships.sort_by!{ |m| m.group.name.downcase }

Problem

I have an array of memberships. In each membership is a group. I need to sort this array of memberships by the name of the group. I've tried a bunch of different ways, and the latest way is this: ``` @memberships.sort_by! { |m| m.group.name } ``` However, this doesn't sort by the name. It appears to be randomly sorting the array. - Membership belongs_to :group - Group has_many :memberships @memberships is equal to: ``` [ { 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 } } ] ``` NOTE: This does work --> @memberships.sort_by! { |m| m.group.id } It will order the array based on the group.id so maybe it has something to do with sorting alphabetically? Any help would be much appreciated.

Original source