Ruby on rails 模型多态关系中的多个has_-one

Ruby on rails 模型多态关系中的多个has_-one,ruby-on-rails,activerecord,ruby-on-rails-4,Ruby On Rails,Activerecord,Ruby On Rails 4,我有一个这样的公司模型: class Company < ActiveRecord::Base has_one :visiting_address, -> { where "addressable_type = 'visiting_address'" }, as: :addressable, class_name: "Address", dependent: :destroy has_one :billing_address, -> { where "addressab

我有一个这样的公司模型:

class Company < ActiveRecord::Base
  has_one :visiting_address, -> { where "addressable_type = 'visiting_address'" }, as: :addressable, class_name: "Address", dependent: :destroy
  has_one :billing_address, -> { where "addressable_type = 'billing_address'" }, as: :addressable, class_name: "Address", dependent: :destroy
  has_one :delivery_address, -> { where "addressable_type = 'delivery_address'" }, as: :addressable, class_name: "Address", dependent: :destroy

  def visiting_address=(address)
     super
     address.update_attribute(:addressable_type, "visiting_address")
  end

  def delivery_address=(address)
     super
     address.update_attribute(:addressable_type, "delivery_address")
  end

  def billing_address=(address)
     super
     address.update_attribute(:addressable_type, "billing_address")
 end
end
为什么要做这个查询,但在我调用c.U地址保存并退出之前,我得到了正确的地址,现在是零。
有人能帮我吗?

这在console中确实有效吗?我不认为
super
能做你认为它能做的事。你有能力改变结构吗?因为单表继承对我来说比多态关联更有意义。但我使用了多态性,因为我有更多的模型将地址作为属性。就super而言,如果我没有重写它,它不只是调用它通常会调用的方法吗?
super
调用父对象中具有相同名称的方法,传递所有参数。这里的父对象是
ActiveRecord::Base
。老实说,我会改用STI。因此,您有一个
地址
类,并从该
账单地址
送货地址
类e.t.c继承。
class Address < ActiveRecord::Base
  belongs_to :addressable, polymorphic: true
end
SELECT  "addresses".* FROM "addresses"  WHERE "addresses"."addressable_id" = ? AND     "addresses"."addressable_type" = ? AND (addressable_type = 'billing_address') LIMIT 1  [["addressable_id", 1], ["addressable_type", "Company"]]