# Member.buddies.sort \>\> undefined method \`\<=\>'

**URL:** <https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066>\
**Category:** Rails\
**Created:** [January 12, 2006, 12:01am UTC](https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066 "2006-01-12T00:01:29Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [January 12, 2006, 12:01am UTC](https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066/1 "2006-01-12T00:01:29Z")

</div>

Hi all

I have a model Member that has a habtm relationship to buddies (also  
members).  
Now I wanted to sort them using sort, but this ends in an error  
“undefined method \<=\>”! Where’s the problem here? Sorry, I’m still  
beginning to learn Ruby. 😉

Thanks  
Josh

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [January 12, 2006, 12:17am UTC](https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066/2 "2006-01-12T00:17:19Z")

</div>

On Jan 11, 2006, at 4:01 PM, Joshua M. wrote:

> Hi all
> 
> I have a model Member that has a habtm relationship to buddies (also  
> members).  
> Now I wanted to sort them using sort, but this ends in an error  
> “undefined method \<=\>”! Where’s the problem here? Sorry, I’m still  
> beginning to learn Ruby. 😉
> 
> Thanks  
> Josh

It sounds like you’re trying to sort ActiveRecord objects, but the  
trouble with that is there is no “right” way to sort them–by first  
name? last name? date at which they were created? backwards?

You have two options: sort them at the database level, or with Ruby.

Database level:

class Member \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :buddies, :class\_name =\> ‘Member’ …  
etc …, :sort =\> ‘lastname, firstname’  
end

This will fetch your associated ‘buddies’ in alphabetical order  
(lastname, ascending) for each Member object.

Alternatively, you can do it in Ruby code like this (probably what  
you tried):

members = Member.find(:all)  
sorted = members.sort { |m1, m2| m1.lastname \<=\> m2.lastname }

This will sort by lastname. There’s a shortcut method in Ruby 1.8  
called ‘sort\_by’ as well. Robby R. recently posted a great  
article at the oreilly ruby blog ([O'Reilly Media - Technology and Business Training](http://www.oreillynet.com/ruby)).  
Unfortunately I can’t find his article there, so look here for a copy  
instead: [Swik - Swik News](http://swik.net/Ruby/O'Reilly+Ruby+Blog/Sorting+an+Array+of)  
+Hashes+with+Ruby+and+Enumerable/bmqu

Duane J.  
(canadaduane)  
[http://blog.inquirylabs.com/](http://blog.inquirylabs.com/)

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [January 12, 2006, 12:23am UTC](https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066/3 "2006-01-12T00:23:05Z")

</div>

Thanks a lot for your answer!

I have done it like that now:

has\_and\_belongs\_to\_many :buddies,  
:class\_name =\> ‘Member’,  
:join\_table =\> ‘members\_have\_buddies’,  
:association\_foreign\_key =\> ‘buddy\_id’,  
:sort =\> ‘username’

but I receive an error now:

Unknown key(s): sort

What’s the problem? Thanks. 🙂

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [January 12, 2006, 10:11am UTC](https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066/4 "2006-01-12T10:11:58Z")

</div>

Joshua M. wrote:

> but I receive an error now:
> 
> Unknown key(s): sort
> 
> What’s the problem? Thanks. 🙂

Try  
:order =\> ‘username’

// JoNtE

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [January 12, 2006, 10:38am UTC](https://www.ruby-forum.com/t/member-buddies-sort-undefined-method/95066/5 "2006-01-12T10:38:29Z")

</div>

Jonas Montonen wrote:

> Try  
> :order =\> ‘username’
> 
> // JoNtE

Thanks, this works perfectly.
