2015-02-08 70 views
0

當「0.5」關閉時,我需要創建一個新的市場「3.5」。問題在於,出於某種原因,很多時候,只有在其生成的服務器上創建了重複的「3.5」,恰好在它關閉0.5並打開第一個3.5的同時。有什麼辦法可以防止創建重複記錄嗎?大多數時候它會創建單個記錄,但出於某種原因,我無法弄清楚,有時候它會混亂起來。Rails意外地創建重複記錄

這裏是有問題的部分代碼:

######CLOSE 0.5/OPENS 3.5 
    if self.markets.find_by_name('0.5') != nil then 
     if result.sum >= 1 && (self.markets.find_by_name('0.5').status == "live" || self.markets.find_by_name('0.5').status == "pre-live") 
     if self.markets.find_by_name('0.5').settle_temp.to_i == 6 

      selection = "Over 0.5 Goals" 

      if self.markets.find_by_name('0.5').status == "live" || self.markets.find_by_name('0.5').status == "pre-live" 
      self.markets.find_by_name('0.5').close(selection) 
      end 
      if self.markets.find_by_name('3.5') == nil then 
      self.markets.create!(name: "3.5", status: "live") 
      end 

     else 
      self.markets.find_by_name('0.5').increment!(:settle_temp) 
     end 
     end 
    end 

回答

0

不知道您的具體情況,但也許你可以在名稱和事項標識字段對添加唯一約束 ?例如,在遷移,你可以寫:

add_index :markets, [:event_id, :name], :unique => true 

這樣你就可以確保只有一個markets與所需name值記錄。

+0

「問題」是市場名稱不是唯一的。它們對於每個「event_id」(表格的另一個屬性)都是唯一的。因爲這個原因你的解決方案是不可能的。我刪除了創建!並放置「創建」。讓我們看看它是否與驗證不重複(我認爲「!」跳過那個對吧?) – ace 2015-02-08 22:17:05

+0

應該修復!謝謝 – ace 2015-02-09 15:53:17

+0

您可以將問題標記爲已回答,不要混淆未來的讀者:) – 2015-02-09 17:00:14