Sha256: b3d0ef5390f495346833991d11e5263caa666a456069a8c847f7d6675edf68da

Contents?: true

Size: 1.27 KB

Versions: 31

Compression:

Stored size: 1.27 KB

Contents

class Factory

  class << self
    attr_accessor :aliases #:nodoc:
  end
  self.aliases = [
    [/(.*)_id/, '\1'],
    [/(.*)/, '\1_id']
  ]

  # Defines a new alias for attributes.
  #
  # Arguments:
  # * pattern: +Regexp+
  #   A pattern that will be matched against attributes when looking for
  #   aliases. Contents captured in the pattern can be used in the alias.
  # * replace: +String+
  #   The alias that results from the matched pattern. Captured strings can
  #   be substituded like with +String#sub+.
  #
  # Example:
  #   
  #   Factory.alias /(.*)_confirmation/, '\1'
  #
  # factory_girl starts with aliases for foreign keys, so that a :user
  # association can be overridden by a :user_id parameter:
  #
  #   Factory.define :post do |p|
  #     p.association :user
  #   end
  #
  #   # The user association will not be built in this example. The user_id
  #   # will be used instead.
  #   Factory(:post, :user_id => 1)
  def self.alias (pattern, replace)
    self.aliases << [pattern, replace]
  end

  def self.aliases_for (attribute) #:nodoc:
    aliases.collect do |params|
      pattern, replace = *params
      if pattern.match(attribute.to_s)
        attribute.to_s.sub(pattern, replace).to_sym
      else
        nil
      end
    end.compact << attribute
  end

end

Version data entries

31 entries across 31 versions & 14 rubygems

Version Path
BrettRasmussen-factory_girl-1.2.2 lib/factory_girl/aliases.rb
BrettRasmussen-factory_girl-1.2.3 lib/factory_girl/aliases.rb
agibralter-factory_girl-1.2.1 lib/factory_girl/aliases.rb
lacomartincik-factory_girl-1.2.1.1 lib/factory_girl/aliases.rb
masa-iwasaki-factory_girl-1.2.1.1 lib/factory_girl/aliases.rb
qrush-factory_girl-1.2.1.1 lib/factory_girl/aliases.rb
thoughtbot-factory_girl-1.2.0 lib/factory_girl/aliases.rb
thoughtbot-factory_girl-1.2.1 lib/factory_girl/aliases.rb
thoughtbot-factory_girl-1.2.2 lib/factory_girl/aliases.rb
ttilley-factory_girl-1.2.2.1 lib/factory_girl/aliases.rb
ttilley-factory_girl-1.2.2.2 lib/factory_girl/aliases.rb
ttilley-factory_girl-1.2.2 lib/factory_girl/aliases.rb
vitalish-factory_girl-1.2.10 lib/factory_girl/aliases.rb
vitalish-factory_girl-1.2.9 lib/factory_girl/aliases.rb
vitalish-factory_girl-1.2.8 lib/factory_girl/aliases.rb
vitalish-factory_girl-1.2.7 lib/factory_girl/aliases.rb
vitalish-factory_girl-1.2.6 lib/factory_girl/aliases.rb
lockbox_middleware-1.2.1 vendor/gems/factory_girl-1.2.3/lib/factory_girl/aliases.rb
malvestuto_factory_girl-1.2.5 lib/factory_girl/aliases.rb
factory_girl-1.2.4 lib/factory_girl/aliases.rb