Tôi đang cố gắng để gọi một cuộc gọi lại after_save qua một mixin, nhưng các thử nghiệm rspec của tôi đang nói với tôi rằng gọi lại được gọi hai lần khi phương thức create
được gọi. Tại sao phương pháp được gọi hai lần?Rails after_save gọi lại được gọi nhiều lần
Các thử nghiệm rspec sau thất bại
it 'should call callback' do
Product.any_instance.should_receive(:update_linkable_attachments).once
Product.create(:name=>'abc')
end
Các thông báo lỗi là:
Failure/Error: Unable to find matching line from backtrace
(#<Product:0xb7db738>).update_linkable_attachments(any args)
expected: 1 time
received: 2 times
Dưới đây là đoạn code
lớpmodule 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
Các sản phẩm có mã khác, nhưng không có bất kỳ callbacks khác.
Phiên bản đường ray? Tôi nghĩ rằng có một vấn đề cho điều này trong một vài phiên bản. – tadman
Tôi đang chạy phiên bản 3.0.8 –
LinkedAttachment có thể đang kích hoạt tính năng này khi tạo liên quan đến sản phẩm theo cách nào đó – charlysisto