class

FactoryBot::DefinitionProxy

Inherits Reference < Object

Constructors

new(definition : Definition, ignore : Bool = false, factory : Factory | Nil = nil)

Instance methods

__declare_association(name : String, factory_name : OptValue, traits : Array(String), overrides : Hash(String, FBValue)) : Nil
__declare_dynamic0(name : String, block : Proc(FBValue)) : Nil
__declare_dynamic1(name : String, block : Proc(Evaluator, FBValue)) : Nil
__declare_plain(name : String, args : Tuple, nargs : NamedTuple) : Nil
__register_inline_sequence(seq : Sequence, name : String | Symbol) : Nil
add_attribute(name : String | Symbol, &block : Proc(Evaluator, FBValue)) : Nil

add_attribute(:name) { ... } — с evaluator-ом или без.

after(*names : String | Symbol, &block : Proc(ActiveRecord::Base, Evaluator, Nil)) : Nil
association(name : String | Symbol, opts : Hash(String, OptValue)) : Nil

association :author, {"factory" => :user, ...} — форма method_missing.

association(name : String | Symbol, *traits, **nargs) : Nil

association :author, factory: :user, strategy: :build (сплат без аннотации: аннотированный сплат вместе с **nargs не матчит вызовы — см. PLAN.md)

before(*names : String | Symbol, &block : Proc(ActiveRecord::Base, Evaluator, Nil)) : Nil
callback(*names : String | Symbol, &block : Proc(ActiveRecord::Base, Evaluator, Nil)) : Nil
factory(name : String | Symbol, **opts) : Nil

Вложенная фабрика: в отличие от Ruby (отложенная регистрация child_factories после родителя) регистрируется немедленно — блок должен выполниться на прокси ребёнка сразу (uncaptured yield).

factory(name : String | Symbol, **opts, &) : Nil
initialize_with

initialize_with { |e| e.new_instance } — аналог Ruby initialize_with { new } (конструктор делегируется build_class).

sequence(name : String | Symbol, initial : Int64 | Int32 | Array(String) | Array(Symbol) = 1_i64, *, aliases : Array(String | Symbol) = [] of String, &block : Proc(Int64, FBValue)) : Nil

sequence(:email) { |n| "person#{n}@example.com" } — inline-версия внутри фабрики; глобальная последовательность НЕ регистрируется.

sequence(name : String | Symbol, initial : Int64 | Int32 | Array(String) | Array(Symbol) = 1_i64, *, aliases : Array(String | Symbol) = [] of String) : Nil
skip_create
to_create
trait(name : String | Symbol, &) : Nil
traits_for_enum(attribute_name : String | Symbol, values : Array(String | Symbol) | Hash(String, FBValue)) : Nil

traits_for_enum :status, ["started", "finished"] / {"started" => 1}

transient

Macros

method_missing(call)