2014-06-18 2 views
0

설치 및 버전 모델과 여러 버전의 설치가 있습니다. 설치시 많은 버전을 생성 할 수 있으며 사용자는 부울 데이터 유형을 사용하여 버전 데이터베이스에서 기본값으로 표시 할 버전을 선택해야합니다.레일 : has_many가 선택되어 있는지 확인하십시오.

사용자가 설치 화면에서 다양한 버전 목록에서 버전을 선택했는지 어떻게 확인할 수 있습니까? 하나만 선택할 수 있고 버전 모델의 default 필드가 '예'로 변경되고 설치에 속한 다른 모든 버전이 '아니오'로 설정됩니다.

답변

1

foreign_key :default_version_id을 설치에 추가하는 것이 좋습니다 모델을 사용하여 Version 클래스의 전체 열을 대신 사용하여 기본 버전을 추적 할 수 있습니다. 그러면 유효성 검사가 더 쉬워집니다. 더 정직 할 것 구현을 Version에서 default 플래그를 제거하고 Installationdefault_version_id를 추가

:

Class Installation < ActiveRecord::Base 
    has_many :versions 

    validate :default_version_must_be_selected 

    private 

    def default_version_must_be_selected 
    if versions.collect{|v| v if(v.default == true)}.compact.length != 1 
     errors.add(:base, 'one default version is required' 
    end 
    end 
end 

편집 : 어쨌든, 현재 구현과 유효성 검사 규칙은 다음과 같을 것 :

Class Installation < ActiveRecord::Base 
    has_many :versions 
    belongs_to :default_version, class_name: 'Version' 

    validates_presence_of :default_version_id 
end 

설치와 상호 작용한다는 것을 알게 될 것입니다. 이 방법을 사용하면 기본 버전이 훨씬 쉽게 될 것입니다. 그것은 단지 협회 일뿐입니다.

+0

감사합니다. ': default_version_id'로 확장 할 수 있습니까? 차이점을 알고 싶습니다. – Peter

+0

그래, 내가 문제에 접근하는 방법에 대한 자세한 정보로 답변을 업데이트했습니다. – Sharagoz

관련 문제