0
我目前是以下問題在我的Rails應用程序(Rails的2.3.5):分頁與加盟模式在Rails的定義的順序
- 我想通過作者的名字存儲在應用程序的書籍進行排序,然後這本書的標題。
書和作者是具體模型,相應的表是Ressources和People。該方案的相關部分(我已經剝離下來的模型位):
create_table "people", :force => true do |t|
t.string "sur_name"
t.string "pre_name"
...
t.string "type"
end
create_table "people_ressources", :id => false, :force => true do |t|
t.integer "ressource_id"
t.integer "person_id"
end
create_table "ressources", :force => true do |t|
t.string "type"
t.string "title"
end
要顯示的書籍列表中,我使用了下列分頁程序:
@books = Book.paginate(
:order => 'title', :per_page => 15, :page => params[:page])
我現在的問題是:應如何構建分頁程序,以便書籍不是按標題排序,而是先由作者(==人)sur_name排序?如果這不容易達到,那麼什麼構造可以將書籍和作者存儲爲單獨的實體,但是會允許按照定義的順序得到一個分頁器?
這看起來相當不錯,我會嘗試(當我有時間)我看過一點點關於'has_one'的關係,它告訴外鍵到另一個對象(在這裏:作者,這將是錯誤的)。 ON http://ar.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html我讀了'belongs_to'獲得了關鍵。或者是關係'people_ressources'中的外鍵?將最終檢查... – mliebelt 2010-10-13 14:02:40
您需要一個'AuthorBook'類(使用'belongs_to:author'和'belongs_to:book')來做到這一點。我不確定你已經定義了哪些關聯。 – Shadwell 2010-10-13 14:52:40
我已經構建了一個完整的新示例來檢查解決方案,但失敗了。我很肯定我沒有犯任何錯誤,我可以將書籍分配給作者和反正作者。我得到的錯誤是:'SQLite3 :: SQLException:沒有這樣的列:authors.sur_name:SELECT「books」。* FROM「books」ORDER BY authors.sur_name LIMIT 15 OFFSET 0'使用上面的paginate調用時。我的SQL知識太基礎,不能理解真實的原因,但它會查找具有屬性的連接表(作者)缺失。 – mliebelt 2010-10-23 15:38:33