Class FixtureReplacementController::AttributeCollection
In: lib/fixture_replacement/controller/attribute_collection.rb
Parent: Object

I am a series of ActiveRecord model attributes.

My attributes come from the following places:

  * from the class which is specified with :from => :fixture_name
    when I was constructed
  * from the anonymous function which is passed from into my constructor

Methods

Attributes

fixture_name  [R] 
from  [R] 
hash_given  [R] 

Public Class methods

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 16
16:       def add_instance(instance)
17:         @instances ||= []
18:         @instances << instance
19:       end

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 21
21:       def clear_out_instances!
22:         @instances = nil
23:       end

Finds the fixture by the given name If there are duplicate fixtures with the same name, it will find the first one which was specified. It will return nil if no fixture with the name given was found

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 29
29:       def find_by_fixture_name(arg)
30:         instances.each { |instance| return instance if instance.fixture_name == arg }
31:         return nil
32:       end

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 12
12:       def instances
13:         @instances ||= []
14:       end

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 35
35:     def initialize(fixture_name, options={})
36:       @fixture_name = fixture_name
37:       @attributes_proc = options[:attributes] || lambda { Hash.new }
38:       @from = options[:from]
39:       @class = options[:class]
40: 
41:       self.class.add_instance(self)
42:     end

Public Instance methods

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 47
47:     def active_record_class
48:       @class || find_by_fixture_name(@from).active_record_class
49:     rescue
50:       constantize(fixture_name)
51:     end

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 53
53:     def hash
54:       return @merged_hash if @merged_hash
55:       os = ClassFactory.fake_active_record_instance.new
56:       @attributes_proc.call(os)
57:       os.to_hash
58:     end

This merges the :from attributes hash and the attributes from the anonymous function, overriding any attributes derived from the :from hash, with the ones given in the anonymous function.

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 63
63:     def merge!
64:       if derived_fixture_is_present?
65:         unmerge_hash!
66:         @merged_hash = derived_fixtures_hash.merge(hash)
67:       end
68:     end

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 74
74:     def to_created_class_instance(hash={}, caller=self)
75:       ClassFactory.active_record_factory.new(self, hash, caller).to_created_instance
76:     end

[Source]

    # File lib/fixture_replacement/controller/attribute_collection.rb, line 70
70:     def to_new_class_instance(hash={}, caller=self)
71:       ClassFactory.active_record_factory.new(self, hash, caller).to_new_instance
72:     end

[Validate]