相关疑难解决方法(0)

使用FactoryGirl的未定义方法after_create

我正在尝试使用after_create回调在FactoryGirl中定义一个has_many关系,就像在/spec/factories/emails.rb中一样:

FactoryGirl.define do
    factory :email do
        after_create do |email|
            email.attachments << FactoryGirl.build(:attachment)
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

附件在单独的工厂/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
Run Code Online (Sandbox Code Playgroud)

在我的规范中使用:附件工作非常好,所以我确信工厂不是问题,但是当我尝试创建一个:来自工厂的电子邮件时,我得到以下异常抛出:

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

我有点不知所措,似乎找不到任何其他人得到同样的错误.

rspec ruby-on-rails-3 factory-bot

11
推荐指数
1
解决办法
4465
查看次数

使用工厂女孩创建HABTM协会

我现在已经尝试了几个小时让工厂女工创建两个工厂 - 一个用于用户,一个用于组织.

但我似乎不明白如何在工厂中反映'has_and_belongs_to_many'关系,一旦我尝试创建组织并将其与管理员用户关联,我会遇到各种错误消息(取决于我使用的方法) ).我的模型似乎工作正常,我的种子文件填充dev DB并创建所有关联.

现在我的文件看起来像这样:

用户工厂

FactoryGirl.define do

  factory :user do
    email 'example@example.com'
    password 'password'
    password_confirmation 'password'
    after(:create) {|user| user.add_role(:user)}

    factory :owner do
      after(:create) {|user| user.add_role(:owner)}
    end

    factory :admin do
      after(:create) {|user| user.add_role(:admin)}
    end

    factory :superadmin do
      after(:create) {|user| user.add_role(:superadmin)}
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

组织工厂

FactoryGirl.define do

  factory :organization do |f|
    f.name "example"
    f.website "www.aquarterit.com"
    f.association :users, :factory => :admin
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的规格中我测试了这个:

describe Organization do


  it "has a valid factory" do
    FactoryGirl.create(:organization).should be_valid
  end

  it "is invalid without …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails factory-bot

7
推荐指数
1
解决办法
4840
查看次数