Ruby on rails Rails对相关记录进行排序
使用Rails 3.0.10和Ruby 1.9.2 我有一本书的模型,有很多页Ruby on rails Rails对相关记录进行排序,ruby-on-rails,Ruby On 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 e
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
classbook
当我检索一本书的页面时,我总是希望它们按页码排序。处理此问题的正确方法是什么,以便调用book.pages将按顺序返回所有页面
在编辑这本书时,我还显示了每一页可以编辑的内容。如果我使用嵌套属性,假设我前面的问题得到解决,这会按正确的顺序返回页面吗
<%= form_for [@book, @pages] do |f| %>
<%= f.fields_for :pages do |page| %>
do something
<% end %>
<% end %>
做点什么
谢谢我相信您可以直接在关联声明中指定默认顺序:
class Book < ActiveRecord::Base
has_many :pages, :order => "page_number asc"
end
class Page < ActiveRecord::Base
belongs_to :book
end
classbook“页码asc”
结束
类页
这样,您就不必自己指定
Book#pages
方法,默认情况下,它仍将按page#u编号asc
排序。对于较新版本的Rails,语法已更改:
class Book < ActiveRecord::Base
has_many :pages, -> { order "page_number asc" }
end
class Page < ActiveRecord::Base
belongs_to :book
end
classbook{顺序“页码asc”}
结束
类页