我正在尝试匹配两个随机播放器,并将它们的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
提前致谢!
答案 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_1
和user_2
的用途,因为该关联已经包含此信息。