2014-03-30 5 views
0

임의의 두 플레이어와 일치 시키려하고 일치라는 별도의 테이블에 ID를 저장하려고합니다. 그러나 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

user_1과 user_2는 무엇입니까? 그들은 속성이 있습니까? –

+1

속성에 값을 할당하려면'self.user_1 ='및'self.user_2 ='를해야합니다. – svoop

+0

예. 일치 표의 속성입니다. – manis

답변

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에 대한 사용 정보가 표시되지 않습니다.

관련 문제