2012-12-07 5 views
2

사용자 및 문서 모델이 있습니다. 사용자에게는 많은 문서가 있고 문서는 사용자에 속합니다. 부모와 자식 모델 만있는 것으로 일반화 할 수 있습니다.레일 외래 키 유효성 검사

이제 하위 모델에 대한 단위 테스트를 작성하고 parent_id 필드의 유효성을 검사해야하는지 궁금합니다 (예 : only_integer, 0보다 큰 값, 상위 테이블에있는 ID 등). 아니면 Rails가 고유 한 외래 키 속성이기 때문에 자동으로 수행합니까?

+0

는 외래 키 제약 조건을 수행하는 데이터베이스를 얻을 것입니다. –

+1

@Rejesh Rails 애플리케이션의 경합은 아닙니다. – meagar

답변

3

당신은 (즉, 수동으로 DB에 연결하고 원시 SQL을 실행할 필요가 없습니다)도 레일을 통해, 외부 키 제한 조건을 추가 할 수 있지만, 당신은뿐만 아니라 모델 자체에 그것을 할 수 있습니다 :

# child.rb 
validates_presence_of :parent 

그러면 parent_id가 있고 해당 ID가 부모 테이블에 있음을 확인합니다.

그렇지 않으면 레일스가 자동으로 제약 조건을 확인하지 않습니다. 3 방법

+1

완벽하고, 내가 필요한 것. 고맙습니다! – weltschmerz

+0

감사! 이 응답을 답으로 표시하는 것을 잊지 마십시오! – MrDanA

+0

그것은 54 초 만에 나를 수 있습니다 ;-) – weltschmerz

4

레일

# child.rb 
validates :parent, presence: true