簡體   English   中英

Rails排序相關記錄

[英]Rails sorting associated records

使用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將按順序返回所有頁面?

編輯圖書時,我還會顯示每個可以編輯的頁面的內容。 如果我使用嵌套屬性,這將以正確的順序返回頁面,假設我之前的問題已解決?

<%= 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

這樣,您不必自己指定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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM