子类中的多态关联问题

时间:2011-09-20 14:10:01

标签: ruby-on-rails ruby

我对Rails 3中的多态关联有一些问题。我的模型看起来像这样:

class Address < ActiveRecord::Base
  belongs_to :contactable, :polymorphic => true  
end

class OrganisationUnit < ActiveRecord::Base
  # some other associations
end

# Subclass of OrganisationUnit
class Company < OrganisationUnit
  has_one :address, :as => :contactable
end

现在,当我想获取公司的地址时,Rails会生成以下SQL查询:

SELECT `addresses`.* FROM `addresses` WHERE (`addresses`.contactable_id = 1021 AND `addresses`.contactable_type = 'OrganisationUnit') LIMIT 1

在我看来这是错误的,因为contactable_type应该是“公司”。 有什么办法可以解决这个问题,或者告诉我们OrganisationUnit只是一个抽象的基类吗?

1 个答案:

答案 0 :(得分:2)

这是预期的行为。将STI表链接到多态关联时,Rails会存储基类名而不是继承的类名。在通过id查找对象后发生STI类型转换。