2014-01-12 70 views
1

我目前正在編寫一個rails應用程序,它具有像對象一樣的常規資源。不過,我想讓我的資源可以同步。我的Web應用程序使用Web離線存儲來緩存來自服務器的結果(用戶無法修改服務器上的數據,使得同步更容易)。當我從服務器獲取,它返回如哈希響應:自定義/修改Rails 3資源路由

{ 
    :new => [...] 
    :updated => [...] 
    :deleted => [...] 
} 

這是一個好主意,直​​到我想有一個定期獲取方法不做任何形式的同步,並簡單地返回一個數組模型

現在我的問題是我想在我的routes.rb文件中創建一個方法來設置路線,以便我有一條到synced_indexindex的路線。理想情況下,我可以做這樣的事情:

synced_resources :plans 

然後一切就都創造了常規資源路線再加上一些額外的像synced_index的。任何想法如何最好地做到這一點?

注:我知道你可以用do...end語法修改資源,但是我想將它抽象爲一個函數,因爲我必須將它用於很多模型。

回答

2

您可以輕鬆地添加更多的動詞到一個寧靜的路線:

resources :plans do 
    get 'synced_index', on: :collection 
end 

檢查guides更多這方面的信息。被列入ActionDispatch一個模塊中

def synced_resources(*res) 
    res.each do |r| 
    resources(r) do 
     get 'synced_index', on: :collection 
    end 
    end 
end 

總結上述方法::路由:::

如果你有幾個途徑類似於此的話,當然,你可以添加一個「synced_resources」幫手映射。

+0

最終將它放入一個必要的初始化程序中,因爲它需要在路徑繪製之前執行。謝謝! –