Rails排序相关记录

使用Rails 3.0.10和Ruby 1.9.2。

我有一个有很多页面的书模型。

class Book < ActiveRecord::Base has_many :pages # is this right? def pages Page.order('page_number asc').find_all_by_book_id(:id) end end class Page < ActiveRecord::Base belongs_to :book end 

当我检索书籍的页面时,我总是希望按页面编号排序。 处理此问题的正确方法是什么,以便调用book.pages将按顺序返回所有页面?

编辑图书时,我还会显示可以编辑的每个页面的内容。 如果我使用嵌套属性,这会以正确的顺序返回页面,假设我之前的问题已经解决了吗?

   do something   

谢谢

我相信您实际上可以直接在关联声明中指定默认顺序:

 class Book < ActiveRecord::Base has_many :pages, :order => "page_number asc" end class Page < ActiveRecord::Base belongs_to :book end 

这样,您就不必自己指定Book#pages方法,默​​认情况下仍会按page_number asc排序。

对于较新版本的Rails,语法已更改:

 class Book < ActiveRecord::Base has_many :pages, -> { order "page_number asc" } end class Page < ActiveRecord::Base belongs_to :book end