2013-02-21 20 views
11

Tôi đang cố gắng để định nghĩa một mối quan hệ has_many trong FactoryGirl sử dụng callback after_create, như vậy trong /spec/factories/emails.rb:phương pháp after_create Không xác định với FactoryGirl

FactoryGirl.define do 
    factory :email do 
     after_create do |email| 
      email.attachments << FactoryGirl.build(:attachment) 
     end 
    end 
end 

Các tập tin đính kèm được định nghĩa trong một riêng biệt nhà máy /spec/factories/attachment.rb:

FactoryGirl.define do 
    factory :attachment do 
     # Attach the file to paperclip 
     file { fixture_file_upload(Rails.root.join('spec', 'support', 'myimage.png'), 'image/png') } 
    end 
end 

Sử dụng: tập tin đính kèm trong thông số kỹ thuật của tôi làm việc hoàn toàn tốt, vì vậy tôi tự tin rằng nhà máy cho đó không phải là vấn đề, tuy nhiên khi tôi cố gắng và tạo ra một : email từ nhà máy tôi nhận được ngoại lệ sau đây ném:

Failure/Error: email = FactoryGirl.create(:email) 
    NoMethodError: 
     undefined method `after_create=' for #<Email:0x007ff0943eb8e0> 

Tôi đang mất một chút về việc phải làm gì, dường như không thể tìm thấy bất kỳ ai khác gặp lỗi tương tự.

Trả lời

29

FactoryGirl recently changed cú pháp cho gọi lại. Tôi nghĩ rằng những điều sau đây sẽ hoạt động:

FactoryGirl.define do 
    factory :email do 
    after(:create) do |email| 
     email.attachments << FactoryGirl.build(:attachment) 
    end 
    end 
end 
+0

Làm việc một sự quyến rũ! cảm ơn cậu. – SirRawlins

Các vấn đề liên quan