我必须在多个列上加入一个表,并希望使用belongs_to关联来建立该关联。制作多个foreign_key,primary_key关联的正确方法是什么?
belongs_to :performance, foreign_key: 'as_of_date', primary_key: 'as_of_date'
belongs_to :performance, foreign_key: 'asset_name', primary_key: 'broad_asset_class'
或
belongs_to :performance, foreign_key: ['asset_name','as_of_date'], primary_key: ['broad_asset_class', 'as_of_date']
还是完全不同的东西?
我正在寻找的内容转换为以下sql:
Joins PERFORMANCE on ASSET.ASSET_NAME = PERFORMANCE.BROAD_ASSET_CLASS
AND ASSET.AS_OF_DATE = PERFORMANCE.AS_OF_DATE
答案 0 :(得分:0)
我不知道你是否可以像这样重复foreign_key
。
我认为您应该在Gemfile中加入gem 'composite_primary_keys'
并执行bundle install
,这样您就可以执行以下操作:
belongs_to :performance,
foreign_key: ['as_of_date', 'asset_name'], #columns in this table
primary_key: ['as_of_date', 'broad_asset_class'] #columns in remote table
在性能模型中:
self.primary_keys = ['as_of_date', 'broad_asset_class']