I have a model similar to the following:
class Foo
attr_accessor :attribute_a # Really an ActiveRecord attribute
attr_accessor :attribute_b # Also an ActiveRecord attribute
def determine_attribute_b
self.attribute_b = some_biz_logic(attribute_a)
end
end
In FactoryGirl 1.3, I had a factory that looked like this:
Factory.define :foo do |foo|
foo.attribute_a = "some random value"
foo.attribute_b { |f| f.determine_attribute_b }
end
This worked just fine. attribute_b
was an attribute dependent on the code block, which would be passed a real instance of Foo
into the variable f
, complete with a properly set attribute_a
to work off of.
I just upgraded to FactoryGirl 2.3.2, and this technique no longer works. The f
variable from the equivalent code to above is no longer an instance of Foo
, but instead a FactoryGirl::Proxy::Create
. This class appears to be able to read the attributes previously set (such that the Dependent Attributes example in the docs still works). However, it can't call actual methods from the built class.
Is there a way I can use the technique from the old version of FactoryGirl? I want to be able to define an attribute and set its value using the result of an instance method of the built class.