module FactoryGuy::Constructable

Public Class Methods

extended(mod) click to toggle source

Need to define default_attributes def default_attributes ; end

# File lib/factory_guy/constructable.rb, line 12
def self.extended(mod)
  mod.class_eval do
    cattr_accessor :resource

    resource_name = mod.to_s.split(/Factory/)[0]
    self.resource = const_get(resource_name)
  end
end

Public Instance Methods

attributes() click to toggle source
# File lib/factory_guy/constructable.rb, line 21
def attributes
  begin
    default_attributes
  rescue NameError
    raise(ImplementationError, "Your factory must implement class-level `#{self}.default_attributes`.")
  end
end
build() click to toggle source
# File lib/factory_guy/constructable.rb, line 29
def build
  resource.new(attributes)
end
create() click to toggle source
# File lib/factory_guy/constructable.rb, line 33
def create
  build.tap(&:save)
end
create!() click to toggle source
# File lib/factory_guy/constructable.rb, line 37
def create!
  build.tap(&:save!)
end