如何在 rails 上 ruby 中的 factorybot 的 'callback' 函数中访问子 class 而不是父 class?
How can I access to a child class instead of parent class in a 'callback' function of factorybot in ruby on rails?
我在 ROR 中实施了 STI。请看下面的代码:
class Category < ApplicationRecord
end
class CourseCategory < Category
has_many :courses
end
我使用 FactoryBot 创建这样的数据:
# category
FactoryBot.define do
factory :category do
name {"Ruby on Rails"}
end
end
# course_category
FactoryBot.define do
factory :course_category, parent: :category, class: 'Category' do
trait :with_course do
after(:create) do |course_category| # my problem is here
create :course, :with_steps, course_category: course_category
end
end
end
# course
FactoryBot.define do
factory :course do
course_category
end
end
当我 运行 FactoryBot.create(:course_category, :with_course)
进入 trait :with_course
时,我应该有 CourseCategory class,但我收到 类别.
我可以访问父 class 而不是子 class 进入 FactoryBot 的回调吗?
你的工厂正在建造 :course_category
作为错误的 class。
此行需要更改...
factory :course_category, parent: :category, class: 'Category' do
进入...
factory :course_category, parent: :category, class: 'CourseCategory' do
我在 ROR 中实施了 STI。请看下面的代码:
class Category < ApplicationRecord
end
class CourseCategory < Category
has_many :courses
end
我使用 FactoryBot 创建这样的数据:
# category
FactoryBot.define do
factory :category do
name {"Ruby on Rails"}
end
end
# course_category
FactoryBot.define do
factory :course_category, parent: :category, class: 'Category' do
trait :with_course do
after(:create) do |course_category| # my problem is here
create :course, :with_steps, course_category: course_category
end
end
end
# course
FactoryBot.define do
factory :course do
course_category
end
end
当我 运行 FactoryBot.create(:course_category, :with_course)
进入 trait :with_course
时,我应该有 CourseCategory class,但我收到 类别.
我可以访问父 class 而不是子 class 进入 FactoryBot 的回调吗?
你的工厂正在建造 :course_category
作为错误的 class。
此行需要更改...
factory :course_category, parent: :category, class: 'Category' do
进入...
factory :course_category, parent: :category, class: 'CourseCategory' do