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