我有一个称为拥有多个版本的资产的表。版本有版本号。每个资产还有一个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)
。
我认为这个应该是可能的原因是因为多态关联使用两个参数。