在Rails

时间:2016-01-05 12:46:14

标签: ruby-on-rails inheritance

是否可以向超类中声明的has_one关联添加选项,而不会丢失超类中声明的选项?像这样:

class AbstractBar < ActiveRecord::Base
  self.abstract_class = true
  has_one :foo, dependent: :destroy
  // Shared validations and stuff for the :foo association
end

class BarA < AbstractBar
  // BarA should have association to FooA
  has_one :foo, class_name: foo_a
end

class BarB < AbstractBar
  // BarB should have association to FooB
  has_one :foo, class_name: foo_b
end

上面的例子不起作用,因为dependent: :destroy将在子类中丢失。

1 个答案:

答案 0 :(得分:0)

是的,有可能。 但是BarA中的foo的foreign_key是bar_a_idBarB中的foo的foreign_key是bar_b_id

可能FooAFooBFoo的子类 所以你应该添加像

这样的foreign_key选项
has_one :foo, class_name: 'FooA', foreign_key: 'bar_id'