두 테이블 - 제품 및 주문이 있다고 가정 해 봅시다. 간단히하기 위해 한 번에 하나의 제품 만 구입할 수 있으므로 order_items와 같은 조인 테이블은 없습니다. 그래서 관계는 제품에는 많은 주문이 있고 주문은 제품에 속해 있습니다. 따라서 product_id는 Order 테이블의 fk입니다. 두 가지 모델, 하나의 STI 및 유효성 검사
제품 테이블
은 STI입니다 - 서브 클래스가되는으로, B, 사용자 주문 서브 클래스 제품 C가, 두 가지 특별한 검증이 주문 모델 필드 ORDER_DETAILS 및 ORDER_STATUS에 확인해야 C.. 이 두 필드는 다른 모든 제품 하위 클래스 (예 : A 및 B)에 대해 nil 일 수 있습니다. 사용자의 구매 A와 B가
내 질문이있는 경우 즉, 더 검증이 두 필드에 실행하는 데 필요하지 않습니다 : 내가 주문 모델에서 검증 (? 아마도 사용자 정의)를 쓰기 어떻게
되도록 Order 모델은 Product 서브 클래스 C에 대한 fk_id가 orders 테이블에 저장 될 때 ITS 두 필드 (order_details 및 order_status)에 대한 유효성 검사 만 실행한다는 것을 알고 있습니까?
def validate
if product and product.type_c?
errors.add(:order_details, "can't be blank") if order_details.blank?
# any other validations
end
end
또는 뭔가를 그 라인을 따라 :
여기에서 다형성을 사용하는 대안이 있습니까? – keruilin
예 ... 내 편집 내용 다시보기 :) 당신이 정말로 겪은 일이 시작되었습니다. 미래의 질문으로 실제 모델 코드를 포함시키는 것이 더 나을 것입니다. 처음부터 나를 도왔을 것입니다. (그때 다시는 그 곳 모든 곳에서 일어 났을 것입니다. :) 단지 –
예, 당신이라고 생각하지 마십시오! 그것은 나의 원래 prob 진술이었다. 일하는 데 도움을 청합니다. – keruilin