Trying to sort results of one-to-many relationship find

Assuming I have two models:

Order “belongs_to :payee”
Payee “has_many :orders”

In the orders table, I store the payee_id.

If I want to pull all orders and display the list alphabetically by the
payees last name, what would be the best way to do it?

Would I need to setup a true “join” table and then run my find on it? I
can’t do this through the view using a sort plugin since that simply
changes the finders SQL and doesn’t include the association logic needed

Since I’m accessing the payee’s name through the association
“order.payee.last_name” what is the best way to accomplish what I need
or do I need to write some convoluted method that breaks down the
recordset and orders it manually?

This is a plain association, no join table involved.

Try this in script/console and see if it solves your problem. The DB
can easily take care of the sorting:

orders = Order.find(:all, :conditions => ‘…’, :include
=> :payee, :order => ‘payees.last_name’)


orders.each { |o| puts o.payee.last_name }


On Jan 8, 11:10 am, Corey M. [email protected]

Harold wrote:

orders = Order.find(:all, :conditions => ‘…’, :include
=> :payee, :order => ‘payees.last_name’)

Awesome. The “:include” option wasn’t something I was aware you could
use in a find for the model. I knew this could be handled using a nice
rails-like convention without having to code some convoluted sorting

That makes life much easier. Thank you very much!