2012-01-16 48 views
0

給定兩個資源RESTful方式來合併資源

  • http://example.com/places/1
  • http://example.com/places/2

應該如何端點模樣雙方資源合併到一個單一的資源?理想情況下,合併後只剩下1個資源。

乍一看,我可以做一個PUThttp://example.com/places/1params[:src_id] = 2。這會將來自第二個資源的屬性合併到第一個資源中,並刪除第二個資源。其他人有更好的方法嗎?

請注意,我使用不支持http MERGE動詞的Rails,因此不存在這個問題。

+0

看看https://github.com/rails/rails/commit/d446392f76c063d9f04396a1d3ca9e314a521671自2010年以來,Rails確實似乎支持MERGE。不知道它是什麼時候將它變成了發行版。也不確定是否適合從webdav上下文改爲非webdav。 – 2013-05-10 12:19:53

回答

2

我建議一個新的控制器PlacesMergeController與一個新的和創建的行動。在新的行動中,你會有一個表格詢問哪些地方合併。表單將對創建操作執行POST請求,在那裏進行實際合併。根據邏輯的複雜性,您也可以使用PlacesMerge模型(非AR!)。

這種方法在處理合並操作的源/目標方面應該給你最大的靈活性 - 而且它很容易維護。

+0

+1:鑑於專用動詞不可用,合併感覺像是POST。 – 2012-01-16 13:20:16

+0

謝謝@ blackbird07,這聽起來像是正確的路要走。 – SengMing 2012-01-18 23:03:04