ActiveRecord多列belongs_to语句

时间:2014-07-21 14:56:25

标签: ruby-on-rails activerecord

我必须在多个列上加入一个表,并希望使用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

1 个答案:

答案 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']