2012-04-24 91 views
0

如何爲具有選項子屬性的模型創建路線?假設我正在創建一個幫助臺應用程序,並且該機票可能與客戶先前與我的訂單相關聯,或者可能與他們尚未訂購的目錄中的某個項目有關。當物品有可選​​的子物品時,您如何創建資源路線?

class CustomerServiceTicket 
    belongs_to :order 
    belongs_to :item 
    belongs_to :buyer 
    belongs_to :customer_service_category 
end 

class Order 
    ... 
    has_one :customer_service_ticket 
    ... 
end 

class Item 
    ... 
    has_one :customer_service_ticket 
    ... 
end 

在customer_service_ticket,order_id和item_id的模式中可以爲空。

因此,我將有一個「創建客戶服務票證」旁邊的鏈接其關閉訂單頁......和旁邊的產品目錄頁上的ITEM_ID類似的聯繫上他們說,他們的order_id的。

我想的URL結構應該是這樣的:

customer_service_ticket /新/順序/ 123

對與訂單

customer_service_ticket /新創建的通知單/項目/ 789

,欲取得項創建車票

,只是 customer_service_ticket /新 時,有沒有(也適用於凡客只是有一個普遍的問題的情況下)

我將如何構建的路線是最有效的?如果有更好的方法我很樂意嘗試,我不會與上面的URL結構結婚。

回答

0

根據你如何描述你的路線,這聽起來像你需要創建一個新的客戶服務票據時已經存在的訂單和項目,這是否正確?如果是這樣,那麼這將是最好創建你這樣的路線:

orders/123/customer_service_ticket/new 
items/123/customer_service_ticket/new 
customer_service_tickets/new 

任何要添加資源到現有的資源時,新的資源,一般延續到了最後,你正在執行之中的行動網址的最後部分。要創建此結構,它將是這樣的:

resources :orders do 
    resource :customer_service_ticket 
end 

resources :items do 
    resource :customer_service_ticket 
end 

resources :customer_service_ticket 

但是,您可能還想重新考慮您的關係。一旦訂單/物品的客戶服務關閉,您是否確定將永遠不會有與該訂單/物品相關的另一個客戶服務票據?這可能表示has_many關係。您也可能想要查看訂單和物品到客戶服務票據的多態關係。這樣,如果您想添加更多與客戶服務票據相關的實體,則不必繼續添加數據庫字段。請注意,更改爲has_many會稍微改變上面的路由聲明。

相關問題