2013-05-23 2 views
0

"유세 선거 (runoff election)"대회를 위해 웹 사이트에서 일하고 있습니다. 즉 유권자는 여러 후보자에게 투표 할 수 있지만 유권자는 개별 후보자에게 한 번만 투표 할 수 있습니다.Rails/ActiveRecord를 사용하는 유혈 스타일 투표

내 모델은 다음과 같습니다

  • 후보

  • 유권자

  • 투표 현재

, 나는 고유 한 정수를 생성 만들 수 Cantor pairing function를 사용하고 있습니다/후보자 ID와 투표에 기초하여 각 투표에 대한 토큰 r ID. 내 투표 모델은이 토큰의 고유성을 검증하여 사람들이 특정 후보에 대해 두 번 이상 투표하지 못하게합니다.

비록 내 코드가 실제로 잘 작동한다고해도 ActiveRecord 연관을 사용하고 수학을 우회 할 수있는 방법이 있어야한다는 것을 알고 있습니다. 그러나 레일스는 새로운 것이므로 모든 입력/토론을 환영합니다!

답변

0

테이블의 voter_idcandidate_id의 고유성을 검증 할 수 있습니까?

class Vote < ActiveRecord::Base 

    validates_uniqueness_of :voter_id, scope: :candidate_id 

end 

당신은 너무 DB에 인덱스를 추가해야합니다 :

add_index "votes", ["voter_id", "candidate_id"], unique: true 
+0

이 완벽하게 작동한다; 나는 이것이 매우 간단하다는 것을 전혀 몰랐습니다! 감사! – alipman88

+0

괜찮습니다! 당신이 나의 대답을 받아 들일 수 있다면 좋을 것이고, 나는 가족 음식을 사는데 사용할 수있는 좋은 점들을 얻을 수 있습니다. – RobHeaton

관련 문제