Rails意外地创建了重复的记录

时间:2015-02-08 18:45:38

标签: ruby-on-rails-4

我需要创造一个新的市场" 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

1 个答案:

答案 0 :(得分:0)

不知道您的具体情况,但也许您可以添加唯一约束 在name和event_id字段对?例如,在迁移中你可以写:

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

通过这种方式,您可以确保只有一条markets条记录具有所需的name值。