Rails STI has_many和belongs_to继续寻找类型列

时间:2016-05-29 15:51:06

标签: ruby-on-rails activerecord

我有以下型号:

class Installation < ActiveRecord::Base
  belongs_to :original_lead, class_name: 'Lead'
end

class Lead < ActiveRecord::Base
  has_many :originated_installations, as: :original_lead, class_name: 'Installation'
end

Lead使用STI,具有类型列。

这意味着我希望每个潜在客户都有多个安装。

问题在于我尝试做类似的事情:

Lead.first.installations

引发错误

PG::UndefinedColumn: ERROR: column installations.original_lead_type 
does not exist LINE 1: ...WHERE "installations"."original_lead_id" = $1 AND
"installations"."original_lead_type" = $2

因此,它正在寻找属于特定引线类型的安装,但我不关心引线类型。

我能够通过替换Lead模型上的has_many语句来解决这个问题,如下所示:

has_many :originated_installations, inverse_of: :original_lead,
 foreign_key: :original_lead_id, class_name: 'Installation'

所以,是的,我的问题已经解决了,我只想分享并知道是否还有其他一些我可以使用的选项。

1 个答案:

答案 0 :(得分:0)

如下替换has_many语句解决了原始问题:

class Lead < ActiveRecord::Base
  has_many :originated_installations, inverse_of: :original_lead,
 foreign_key: :original_lead_id, class_name: 'Installation'
end