class MR::Factory::RecordFactory::Config

Public Instance Methods

ar_association_for(record, name) click to toggle source
# File lib/mr/factory/record_factory.rb, line 79
def ar_association_for(record, name)
  if (reflection = record.class.reflect_on_association(name))
    record.association(reflection.name)
  end
end
build_associated_record(association_name, record_class) click to toggle source
# File lib/mr/factory/record_factory.rb, line 75
def build_associated_record(association_name, record_class)
  self.factory_for(association_name, record_class).record
end

Private Instance Methods

apply_default_args(record) click to toggle source
Calls superclass method
# File lib/mr/factory/record_factory.rb, line 87
def apply_default_args(record)
  column_defaults.each do |column_name, column_type|
    record.send("#{column_name}=", MR::Factory.send(column_type))
  end
  super(record)
end
association_column_names(record_class) click to toggle source
# File lib/mr/factory/record_factory.rb, line 118
def association_column_names(record_class)
  names = []
  record_class.reflect_on_all_associations(:belongs_to).each do |reflection|
    names << reflection.foreign_type if reflection.options[:polymorphic]
    names << reflection.foreign_key
  end
  names
end
build_factory_for_record_class(record_class) click to toggle source
# File lib/mr/factory/record_factory.rb, line 94
def build_factory_for_record_class(record_class)
  MR::Factory::RecordFactory.new(record_class)
end
column_defaults() click to toggle source
# File lib/mr/factory/record_factory.rb, line 98
def column_defaults
  @column_defaults ||= begin
    association_column_names = association_column_names(self.record_class)
    self.record_class.columns.inject({}) do |args, column|
      column_type = column.type || column.sql_type
      if should_default_column?(column, association_column_names, column_type)
        args[column.name.to_s] = column_type
      end
      args
    end
  end
end
should_default_column?(column, association_column_names, column_type) click to toggle source
# File lib/mr/factory/record_factory.rb, line 111
def should_default_column?(column, association_column_names, column_type)
  !column.primary                                 &&
  !association_column_names.include?(column.name) &&
  !column_type.nil?                               &&
  MR::Factory.respond_to?(column_type)
end