sort descending array ruby-on-rails ruby arrays sorting enumerable

ruby on rails - descending - ¿Cómo ordenas una matriz alfabéticamente usando sort_by en ruby?



ruby select (3)

Tengo una serie de membresías. En cada membresía hay un grupo. Necesito ordenar esta variedad de membresías por el nombre del grupo. He intentado un montón de maneras diferentes, y la última forma es esta:

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

Sin embargo, esto no se ordena por el nombre. Parece estar ordenando aleatoriamente la matriz.

  • Pertenencia al miembro_grupo: grupo
  • Grupo has_many: membresías

@memberships es igual a:

[ { 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 } } ]

NOTA: Esto funciona -> @ memberships.sort_by! {| m | m.group.id}

¿Ordenará la matriz según el group.id, así que tal vez tenga algo que ver con la ordenación alfabética?

Cualquier ayuda sería muy apreciada.


¿Es el método de clasificación una opción?

ary.sort{ |a,b| a[:group][:name] <=> b[:group][:name] }


No veo cómo está funcionando tu código. No puedo acceder a los hashes en las matrices usando m.group.name

Aquí hay una sintaxis de trabajo

@memberships.sort_by!{ |m| m[:group][:name] }


Wow, después de luchar con esto por un tiempo extremadamente largo, me di cuenta de que mi problema era simple. Estaba clasificando por nombre de grupo, pero algunos de los nombres de los grupos estaban en mayúsculas y otros eran más bajos, lo que lo estaba descartando todo. Convertir todo a downcase funcionó bien.

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