У меня есть класс, который расширяет FactoryBot для включения функциональности для копирования Rails '.first_or_create
.
module FactoryBotFirstOrCreate
def first(type, args)
klass = type.to_s.camelize.constantize
conditions = args.first.is_a?(Symbol) ? args[1] : args[0]
if !conditions.empty? && conditions.is_a?(Hash)
klass.where(conditions).first
end
end
def first_or_create(type, *args)
first(type, args) || create(type, *args)
end
def first_or_build(type, *args)
first(type, args) || build(type, *args)
end
end
Я могу добавить это к классу SyntaxRunner
module FactoryBot
class SyntaxRunner
include FactoryBotFirstOrCreate
end
end
для доступа к нему на фабриках
# ...
after(:create) do |thing, evaluator|
first_or_create(:other_thing, thing: thing)
end
Но когда я пытаюсь использовать это за пределамия не могу получить к нему доступ ...
FactoryBot::SyntaxRunner.first_or_create
или FactoryBot.first_or_create
не помогает include
в модуле FactoryBot это не помогаетhelp config.include
in RSpec.configure
не помогает - Я даже не могу получить к нему прямой доступ
FactoryBot::SyntaxHelper.first_or_create
Со всеми этими шагами вместо, я все еще получаю NoMethodError: undefined method first_or_create
Что я могу включить или иным образом настроить, чтобы этот метод был таким же доступным для меня, как FactoryGirl's create
?