11

/spec/factories/emails.rb のように、after_create コールバックを使用して、FactoryGirl で has_many 関係を定義しようとしています。

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

アタッチメントは、別のファクトリ /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

私の仕様で :attachment を使用してもまったく問題なく動作するため、そのためのファクトリは問題ではないと確信していますが、ファクトリから :email を作成しようとすると、次の例外がスローされます。

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

私は何をすべきかについて少し途方に暮れています。同じエラーが発生している人を見つけることができないようです。

4

1 に答える 1

31

FactoryGirlは最近、コールバックの構文を変更しました。私は以下がうまくいくと思います:

FactoryGirl.define do
  factory :email do
    after(:create) do |email|
      email.attachments << FactoryGirl.build(:attachment)
    end
  end
end
于 2013-02-21T14:30:38.410 に答える