많은 버전이있는 assets이라는 테이블이 있습니다. 버전에는 버전 번호가 있습니다. 각 저작물에는 최신 (최신) 버전을 나타내는 version_number 열도 있습니다.레일즈 - 두 개의 매개 변수가있는 has_one 연관
자산과 최신 버전 간의 연관성을 설정하고 싶지만이를 수행하는 방법에 대한 문서를 찾을 수 없습니다. 그것은 이론적으로, 본래의 접근법은이 것이
asset.rb
has_one :latest, class_name: "Version", foreign_key: ["asset_id", "version_number"], primary_key: ["id", "version_number"]
과 같을 것이다 :
asset.rb
def latest
Version.where(asset_id: asset.id, version_number: asset.version_number).first
end
단지 그 일에 대한 문제 그래도 코드 에서처럼, 자산의 association_cache에 '최신'을로드 할 수 없다는 것입니다. 또한 Asset.includes(:latest).where(project_id: 7)
과 같은 자산 집합을로드 할 때 할당 된 모든 최신 레코드를 쉽게 열거 할 수 없습니다.
다형 연관은 두 개의 매개 변수를 사용하기 때문에이 은이어야한다고 생각하는 이유는 다음과 같습니다.