FactoryGirl用于具有继承的模型,其中父级和子级具有关联

时间:2014-11-20 11:20:14

标签: inheritance ruby-on-rails-4 associations factory-bot rspec-rails

我有一个典型的继承模式,但是父对象与另一个模型有关联,而且子对象也与其他模型有关联。

class MyBase < ActiveRecord::Base
  belongs_to :game, inverse_of: :my_base
  validates :game, presence: true
end

class Child < MyBase
  self.table_name = 'children'
  belongs_to :user, inverse_of: :child
  validates :user, presence: true
end

我知道我可以告诉工厂女孩使用特定的类但是当我使用子类作为构造函数时,它不能为父类创建关联,反之亦然。

  factory :child, class: MyBase, parent: :my_base do
    association :user, strategy: :build
  end

在linted:

时,这给了我无效工厂

child - can't write unknown attribute 'user_id' (ActiveModel::MissingAttributeError)

我如何设置我的工厂将创建两个关联?

PS:这是一个多表继承情况。

1 个答案:

答案 0 :(得分:1)

通过将子类用作&#34;类&#34;使其工作。名:

FactoryGirl.define do
  factory :child, class: Child, parent: :my_base do
    association :owner, factory: :user, strategy: :build
  end
end