Class FactoryGirl::DefinitionProxy
In: lib/factory_girl/definition_proxy.rb
Parent: Object

Methods

Constants

UNPROXIED_METHODS = %w(__send__ __id__ nil? send object_id extend instance_eval initialize block_given? raise)

Attributes

child_factories  [R] 

Public Class methods

Public Instance methods

Adds an attribute that should be assigned on generated instances for this factory.

This method should be called with either a value or block, but not both. If called with a block, the attribute will be generated "lazily," whenever an instance is generated. Lazy attribute blocks will not be called if that attribute is overridden for a specific instance.

When defining lazy attributes, an instance of FactoryGirl::Proxy will be yielded, allowing associations to be built using the correct build strategy.

Arguments:

  • name: Symbol or String The name of this attribute. This will be assigned using "name=" for generated instances.
  • value: Object If no block is given, this value will be used for this attribute.

Adds an attribute that builds an association. The associated instance will be built using the same build strategy as the parent instance.

Example:

  factory :user do
    name 'Joey'
  end

  factory :post do
    association :author, :factory => :user
  end

Arguments:

  • name: Symbol The name of this attribute.
  • options: Hash

Options:

  • factory: Symbol or String
     The name of the factory to use when building the associated instance.
     If no name is given, the name of the attribute is assumed to be the
     name of the factory. For example, a "user" association will by
     default use the "user" factory.
    

Calls add_attribute using the missing method name as the name of the attribute, so that:

  factory :user do
    name 'Billy Idol'
  end

and:

  factory :user do
    add_attribute :name, 'Billy Idol'
  end

are equivalent.

If no argument or block is given, factory_girl will look for a sequence or association with the same name. This means that:

  factory :user do
    email { create(:email) }
    association :account
  end

and:

  factory :user do
    email
    account
  end

are equivalent.

Adds an attribute that will have unique values generated by a sequence with a specified format.

The result of:

  factory :user do
    sequence(:email) { |n| "person#{n}@example.com" }
  end

Is equal to:

  sequence(:email) { |n| "person#{n}@example.com" }

  factory :user do
    email { FactoryGirl.create(:email) }
  end

Except that no globally available sequence will be defined.

[Validate]