我需要创造一个新的市场" 3.5"当" 0.5"关闭。问题是,由于某种原因,很多次,并且只有在实时服务器上它创建了重复的" 3.5",恰好在它关闭0.5并打开第一个3.5的同时。有没有办法防止创建重复的记录?大多数时候它会创建单个记录,但出于某种原因我无法弄清楚,有时它会混乱。
以下是有问题的代码的一部分:
######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 :(得分:0)
不知道您的具体情况,但也许您可以添加唯一约束 在name和event_id字段对?例如,在迁移中你可以写:
add_index :markets, [:event_id, :name], :unique => true
通过这种方式,您可以确保只有一条markets
条记录具有所需的name
值。