class Makers::Maker

Attributes

assignments[R]
associations[R]
disabled_association[RW]
model[R]
name[R]
options[R]
sequences[R]

Public Class Methods

new(name, model, assignments, associations, sequences, options) click to toggle source
# File lib/makers/maker.rb, line 7
def initialize(name, model, assignments, associations, sequences, options)
  @name = name
  @model = model
  @assignments = assignments
  @associations = associations
  @sequences = sequences
  @options = options
end

Public Instance Methods

attributes() click to toggle source
# File lib/makers/maker.rb, line 32
def attributes
  all = assignments.dup
  if options.has_key?(:parent)
    all.reverse_merge! Makers.definitions.find(options[:parent]).assignments
  end
  if disabled_association
    associations.each do |name, class_name|
      if disabled_association == class_name
        all[name] = -> { nil }
      end
    end
  end
  object = Object.new
  all.each do |name, block|
    object.define_singleton_method name, &block
  end
  hash = {}
  all.keys.each do |name|
    hash[name] = object.send(name)
  end
  hash
end

Private Instance Methods

build_one(overrides={}) click to toggle source
# File lib/makers/maker.rb, line 57
def build_one(overrides={})
  instance = model.new
  attributes.merge(overrides).each do |name, value|
    instance.send "#{name}=", value
  end
  instance
end
create_one(overrides={}) click to toggle source
# File lib/makers/maker.rb, line 65
def create_one(overrides={})
  instance = build_one(overrides)
  instance.save!
  instance
end