2015-02-08 85 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