【发布时间】:2021-08-19 21:02:10
【问题描述】:
我有一个user,他拥有多个trackers。每个tracker 都属于一个名为trackable 的多态关联,它引用许多其他类之一。
以下是关系:
# User
has_many :trackers
has_many :dogs
has_many :cats
has_many :horses
# Tracker
belongs_to :user
belongs_to :trackable, polymorphic: true
# Dog, Cat, Horse, etc.
belongs_to :user
has_one :tracker, as: :trackable, dependent: :destroy
我想使用跟踪器工厂在 FactoryBot 中创建整个设置。
factory :tracker do
user
traits :dog do
association :trackable, factory: :dog
end
traits :cat do
association :trackable, factory: :cat
end
traits :horse do
association :trackable, factory: :horse
end
after(:build) do |tracker|
tracker.trackable.user = tracker.user
end
end
上述内容似乎只有在我在 Tracker 中设置时才有效:belongs_to :user, optional: true。如果我使关系成为必需的,上面的代码就会失败。
如何修改上述代码,以便可以与 :dog 一起创建 Tracker,使两者都属于同一个用户?
【问题讨论】:
标签: factory-bot