| 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
| fixture_name | [R] | |
| from | [R] | |
| hash_given | [R] |
# File lib/fixture_replacement/controller/attribute_collection.rb, line 16
16: def add_instance(instance)
17: @instances ||= []
18: @instances << instance
19: end
# 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
# 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
# File lib/fixture_replacement/controller/attribute_collection.rb, line 12
12: def instances
13: @instances ||= []
14: end
# 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
# 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
# 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.
# 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
# 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