2014-06-18 2 views
0

SSH, S3, Local 등의 모델을 상속 한 activerecord 모델 인 Connection이 있습니다. 이러한 하위 모델에 대해 서로 다른 존재 확인이 있습니다.ActiveRecord : 부모를 통해 상속 된 클래스를 확인합니다.

제 생각에는 선택한 유형에 따라 다른 필드를 표시하거나 숨기는 연결 유형에 대한 '유형'드롭 다운이 있습니다. 저장시, 컨트롤러는 매개 변수를 연결 유형 모델로 저장합니다.

문제는 "입력"이 필요한 값으로 설정되어 있음에도 불구하고 부모 (Connection) 클래스의 인스턴스에서 save 메서드가 실행 됨으로써 해당 자식 유효성 검사가 확인되지 않는다는 것입니다.

"type"의 값에 따라 모델의 새 인스턴스를 저장하는 스위치로이 문제를 해결할 수는 있지만 어쨌든 그것은 우아하지 않게 보입니다. ... 그럼, 내 Connection 모델이 'SSH'형식의 값으로 저장되면 'SSH'유효성 검사가 해당 모델에서 실행되도록하는보다 우아한 방법이 있습니까?

답변

1

당신은 becomes 방법

instance.becomes(OtherObject) 

그것은 현재 레코드의 속성으로 지정된 'KLASS'의 인스턴스를 반환을 시도 할 수 있습니다.

http://apidock.com/rails/ActiveRecord/Persistence/becomes

스위치보다 조금 더 우아한.

또 다른 생각은 올바른 컨트롤러를 호출합니다. 동적으로 양식의 URL을 변경합니다.

관련 문제