foreign_key :default_version_id
을 설치에 추가하는 것이 좋습니다 모델을 사용하여 Version 클래스의 전체 열을 대신 사용하여 기본 버전을 추적 할 수 있습니다. 그러면 유효성 검사가 더 쉬워집니다. 더 정직 할 것 구현을 Version
에서 default
플래그를 제거하고 Installation
에 default_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
설치와 상호 작용한다는 것을 알게 될 것입니다. 이 방법을 사용하면 기본 버전이 훨씬 쉽게 될 것입니다. 그것은 단지 협회 일뿐입니다.
감사합니다. ': default_version_id'로 확장 할 수 있습니까? 차이점을 알고 싶습니다. – Peter
그래, 내가 문제에 접근하는 방법에 대한 자세한 정보로 답변을 업데이트했습니다. – Sharagoz