2015-12-04 143 views
0

我開發一個Rails網上商店應用程序,我有以下系統設置:Rails的Web服務通信

  • 2個獨立的Web服務(很簡單的Rails應用程序代碼相同,但不同的數據庫)
  • Main Rails應用程序存儲來自這兩個Web服務的信息。

主應用程序從兩個Web服務(以JSON格式)獲取一些信息,並且必須選擇項目(基於價格)。出於測試目的,我目前將所有項目都從兩者中取出並添加到主應用程序的數據庫中。但是,當項目正在存儲在主數據庫中時(使用簡單的.create以及包含所有參數的散列,它好像多次添加項目,因此需要很長時間。)

首先,什麼是一般的做這種事情的一個很好的策略 - 從Web服務獲取數據並存儲它?此外,我想在什麼時候要求更新主數據庫?如果每次用戶連接。

回答

0

我假設數據中有一個關鍵的id值...如果不是,你應該定義一個,很可能是一個自動遞增的整數ID,因爲這個ID被標記爲rails儘管你可能需要一個UUID或許是SecureRandom.uuid),因爲這兩個數據源獨立於eac h其他,這增加了一個Rails應用程序的複雜性

在這種情況下,您可以使用@model = Model.find_or_create_by(key_value:value)以避免重複創建,並且@ model.update_attributes(實質上使用更新操作)只修改已更改的內容。

+0

我確實有一個ID列,並正在考慮將其用於此目的,但這兩個Web服務可能具有相同ID的不同條目。如果主應用程序必須協調Web服務的ID,我認爲它會更加複雜。 – MZokov

+0

然後您應該使用uuid或從數據創建唯一的複合鍵 – engineerDave