使用foreign_key和primary_key更改选项时,对has_many的Rails出现不可预测的行为

时间:2015-11-13 08:05:58

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我在获取has_many关联对象时面临ids关联的不可预测行为。模特:

class Dealer < AR::Base
  # attributes :id, :dk_id and so on
  with_options class_name: 'Campaign', primary_key: :dk_id, foreign_key: :dk_specific_id do |assoc|
    assoc.has_many :campaigns
  end
end

class Campaign
  # attributes :id, :dk_specific_id and so on
end

我想为dealer获取'campaign_ids'。它返回一个错误。我不明白为什么。

dealer = Dealer.first
dealer.campaigns # => return a list of campaigns to me
dealer.campaign_ids # => exception
ActiveRecord::StatementInvalid - PG::UndefinedColumn: ERROR:  column campaigns.dk_id does not exist
LINE 1: SELECT "campaigns".dk_id FROM "camp...
               ^
: SELECT "campaigns".dk_id FROM "campaigns" WHERE "campaigns"."dk_specific_id" = $1

请帮助我了解如何使此方法有效。我无法理解为什么这种方法要求campaigns表格dk_id,因为它应该只询问id,不是吗?

已更新

dk_id是主键,其值可以是abc1。因此,该经销商的广告系列有dk_specific_id=abc1

0 个答案:

没有答案
相关问题