2013-08-19 3 views
3

나는 Apps라는 모델이있는 Rails 4 App에서 일하고 있습니다. 각 앱은 인증서 모델에 저장된 여러 인증서를 가질 수 있습니다. 인증서에서 각 응용 프로그램은 현재 응용 프로그램에 대해 활성화 된 개발 및 프로덕션 인증서를 가질 수 있습니다. 한 번에 두 개의 인증서 만 (개발/생산) 응용 프로그램에 대해 활성화 될 수 있습니다. 이 논리에 대한 ActiveRecord 구조를 찾으려고 노력하고 있지만 잃어 버렸습니다. 이것에 대한 제안?2 개의 레일이 있고 많은 수의 레일

Apps (Has Many certificates) 
    - development_certificate 
    - production_certificate 

Certificates (Belongs to App) 

답변

3

솔루션 :

class App < ActiveRecord::Base 
    belongs_to :production_certificate, class_name: "Certificate" 
    belongs_to :development_certificate, class_name: "Certificate" 
end 
+0

감사합니다. 사용하고 있습니다. 모델에 대한 추가 설정이 필요하거나 특정 필드를 추가해야합니까? – ny95

+1

'App' 모델은'production_certificate_id'와'development_certificate_id'를 필요로합니다. 그게 다야. – meagar

1

음, 모델에 2 개의 부울 값을 입력하십시오. 하나는 development이고 하나는 production입니다. 그런 다음이 응용 프로그램에 대해 development 또는 production 인증서가 활성 상태 인 경우 만들기를 확인하는 사용자 정의 유효성 검사기를 만듭니다. 또한이 인증서를보다 쉽게 ​​얻을 수있는 두 개의 범위를 만들 수 있습니다.
너는 그것을 재고 할 필요가 없으며, 어떤 미친 방법으로 그것을 모델링 할 필요가 없다. 데이터가 단순히 두 개의 일대일 관계를보다 밀접하게 모델입니다

+0

모든 새 인증서가 자동으로 할 수있는 연수로 분류 내 인증 모델에서,이 주셔서 감사합니다 보기에서 인증서를 편집하고 프로덕션으로 변경하여 변경되었습니다. 즉, 각 인증서가 이미 환경으로 분류되었지만 특정 응용 프로그램에서 사용하도록 설계되지 않은 경우 위의 내용은 작동하지 않습니다. 거기에 이것이 해결 방법이 있습니까? – ny95

+0

글쎄, 하나의'app'는 각 타입마다 단 하나의'인증서'만 가지고 있습니다. @ meagar 대답은 맞습니다. – MurifoX

+0

도움을 주셔서 감사합니다. – ny95