2013-08-28 3 views
0

Ruby의 Datamapper에서이 작업을 수행하고 싶습니다.Ruby datamapper - 테이블 생성시 콜백?

테이블을 생성 한 다음에 SQL 문을 (원시) 후에 실행하십시오. 내 DB는 지금 SQLite입니다. 나는 http://datamapper.org/docs/callbacks.html을 체크 아웃했지만 테이블이 생성 된 후에 콜백을 추가 할 때 어떤 것도 가지지 않습니다. 나는 모든 테이블이 생성 된 후에 제약 조건을 직접 추가하거나 alter table과 같은 것을 추가해야하기 때문에 이것을 말하고있다. 제약 조건은 다른 테이블의 여러 키에 대한 unique_index입니다. 다음과 같은 내용 :

어쨌든 내가 원하는 것은 각 후보자 - 후보 - 범주 - 판단자 조합이 고유해야한다는 것입니다. : 다른 테이블에 연결되지 않은 다른 필드를 포함하지 않으면 : unique_index 것은 작동하지 않습니다. 그래서 난 그냥 원시 SQL을 통해 제약 조건을 추가 할 생각 (ORM을 사용하지 않았다면 내가 할 수있는).

답변

1

난 그냥 사용자 정의 유효성 검사를 작성하여 이것을 해결했습니다. 바보 나.

validates_with_method :check_uniqueness_of_score 

def check_uniqueness_of_score 
    !(Score.all(pageant_id: self.pageant_id, candidate_id: self.candidate_id, 
     category_id: self.category_id, judge_id: self.judge_id).count > 0) 
end 
관련 문제