Я пытаюсь ввести обратный вызов after_save через миксин, но мои тесты rspec сообщают мне, что обратный вызов вызывается дважды при вызове метода create
. Почему метод вызывается дважды?
Следующий тест rspec не пройден
it 'should call callback' do
Product.any_instance.should_receive(:update_linkable_attachments).once
Product.create(:name=>'abc')
end
Сообщение об ошибке:
Failure/Error: Unable to find matching line from backtrace
(#<Product:0xb7db738>).update_linkable_attachments(any args)
expected: 1 time
received: 2 times
Вот код
module MainModuleSupport
def self.included(base)
base.instance_eval("after_save :update_linkable_attachments")
end
def update_linkable_attachments
LinkedAttachment.delay.create_from_attachment self
end
end
class Product < ActiveRecord::Base
include MainModuleSupport
...
end
Класс Product имеет другой код, но не имеет других обратных вызовов.