2012-10-29 23 views
0

我正在使用Rails'漂亮的accepts_nested_attributes_for來創建invoices及其itemsItems可以動態添加到帶有jQuery的invoice如何在使用Rails的accept_nested_attributes_for功能時維護子記錄上的訂單?

class Invoice < ActiveRecord::Base 
    attr_accessible :project_id, :number, :date, :recipient, :items_attributes 
    accepts_nested_attributes_for :items 
end 

這工作正常。除了訂單其中Rails保存items

例如,當我創建一個invoice這5 items ...

A 
B 
C 
D 
E 

...一切工作正常。但是,當我再砸Create保存發票加項目數據庫,順序是完全隨機的,比如像這樣:

D 
A 
C 
E 
B 

一窺我的數據庫和我items表的created_at列透露,滑軌(或SQLite?)似乎以隨機順序保存items,而不是按照我(作爲用戶)將它們添加到invoice的順序。

這是正常的行爲,如果是這樣,我怎麼能保持items正確的順序,我加到我的invoice

感謝您的幫助......

回答

0

您可以指定關聯對象是通過傳遞一個接到命令:命令選項的關聯。例如:

has_many :items, :order => "created_at DESC" 

來源:association options

+0

OK,感謝您的幫助。但實際上這條線沒有任何區別。問題在於'items'以* random *順序**保存到數據庫中。 Rails有什麼方法檢測我將它們添加到'invoice'的順序? – Tintin81

+0

我的解決方案建議如何檢索子對象,因此如果要查詢發票子項以將其顯示給客戶端或進行處理,您將按選項散列指定的順序查看它們。只是爲了澄清,是否有另一個原因,爲什麼你需要讓他們以特定的方式在數據庫中排序? – Noz

+0

我正在構建一個開發票申請表,並且'items'應該始終以它們添加的確切順序出現。關鍵時刻是「發票」第一次被保存的時刻。因爲這種保存完全混雜了剛剛添加到表單中的所有「項目」。從用戶的角度來看這是不可接受的。 – Tintin81

相關問題