交易不更新记录

时间:2014-03-30 11:16:47

标签: ruby-on-rails ruby-on-rails-4

我正在尝试匹配两个随机播放器,并将它们的ID存储在一个名为Matches的单独表中,但每当我调用initialize_match方法时,只有时间戳插入到记录中,而不是其余的

class Match < ActiveRecord::Base

# Associations
has_and_belongs_to_many :users

def initialize_match
    players = match_players
    with_lock do
  # Makes transaction
  user_1 = players[0].id
  user_2 = players[1].id
  finished = false
  save!
end    
end

def match_players
    users = User.limit(2).order("RANDOM()")
end
end

提前致谢!

1 个答案:

答案 0 :(得分:0)

只是一个想法:

has_and_belongs_to_many :users

def initialize_match
  fail 'cannot initialize unpersisted match' unless persisted?
  transaction do
    users << random_players
    self.finished = false
    save!
  end
end

def random_players
  User.limit(2).order("RANDOM()")
end

我没有对此进行测试,因此您可能需要对其进行优化。

我在这里看不到user_1user_2的用途,因为该关联已经包含此信息。