У меня есть модель, похожая на следующую:
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
В FactoryGirl 1.3 у меня была фабрика, которая выглядела так:
Factory.define :foo do |foo|
foo.attribute_a = "some random value"
foo.attribute_b { |f| f.determine_attribute_b }
end
Это сработало просто отлично. attribute_b
был атрибутом, зависящим от блока кода, который передавал реальный экземпляр Foo
в переменную f
, в комплекте с правильно установленным attribute_a
для работы.
Я только что обновился до FactoryGirl 2.3.2, и эта техника больше не работает. Переменная f
из эквивалентного кода выше не является экземпляром Foo
, а вместо FactoryGirl::Proxy::Create
. Похоже, что этот класс способен читать ранее установленные атрибуты (так что пример Зависимые атрибуты в документах все еще работает). Однако он не может вызывать реальные методы из встроенного класса.
Есть ли способ использовать технику из старой версии FactoryGirl? Я хочу иметь возможность определить атрибут и установить его значение, используя результат метода экземпляра встроенного класса.