How to order by a field in the belongs_to association

Consider this: class Document has_many :revisions end class Revision belongs_to :document end

Suppose I wanted to query all records in my revisions table, but I wanted to order the results by document.number. What sort of conditions would I have to impose on my call to Revision.find_all? Is there a way to specify this in Ruby/Rails? Or will I need to (shudder) write some SQL?

–wpd

Specify the :order param in your find, à la :order => 'documents.number ASC'

I can’t figure out how to make that work – the revisions table does not have a column named “documents”. It does have a “document_id” field, which is associated with a specific record in the documents table. I’m trying to figure out how I can query the “revisions” table, but sort the results based on data stored in the associated record in the “documents” table.

–wpd

You'll need to do a join to the documents table then, à la

@revisions = Revision.find(:all, :include => :document, :order => 'documents.sort_field')

Read up on ActiveRecord find for more info.

Regards, Franz

You’ll need to do a join to the documents table then, à la

@revisions = Revision.find(:all, :include => :document, :order =>

‘documents.sort_field’)

Beautiful. That’s just what I was looking for.

–wpd