我有一個稱爲擁有多個版本的資產的表。版本有版本號。每個資產還有一個version_number列,表示最新(最新)版本。Rails - 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中的'latest'。當我加載一組資產時,我也無法輕鬆加載所有關聯的「最新」記錄,如Asset.includes(:latest).where(project_id: 7)
。
我認爲這個應該是可能的原因是因爲多態關聯使用兩個參數。