Ruby on rails rspec在FactoryGirl创建的模型上找不到id

Ruby on rails rspec在FactoryGirl创建的模型上找不到id,ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,我有以下型号: class Game < ActiveRecord::Base validates_presence_of :team_b_id, :team_a_id def description Team.find(team_a_id).name + " vs " + Team.find(team_b_id).name end end 验证不起作用,因为它: “找不到id为1的团队” 这些是工厂: FactoryGirl.define do

我有以下型号:

class Game < ActiveRecord::Base
  validates_presence_of :team_b_id, :team_a_id

  def description
    Team.find(team_a_id).name + " vs " + Team.find(team_b_id).name
  end
end
验证不起作用,因为它:

“找不到id为1的团队”

这些是工厂:

FactoryGirl.define do
  factory :game do |f|
    f.team_a_id { 1 }
    f.team_b_id { 2 }
  end
end

FactoryGirl.define do
  factory :team do |f|
    f.name { "Team Name" }
  end
end

由于您没有正确设置id,错误可能发生在描述函数中

尝试将代码更改为以下内容:

team_a_id = FactoryGirl.create(:team, name: "Team A").id
team_b_id = FactoryGirl.create(:team, name: "Team B").id

game = FactoryGirl.create(:game, team_a_id: team_a_id, team_b_id: team_b_id)

这应该在游戏模型中设置id。

ruby 4,factory_girl_rails\n您已经定义了
f.team_a_id{1}
f.team_b_id{2}
所以当您调用
FactoryGirl.create(:team,name:“team a”)
它将自动接受这两个定义值,因此它同时具有团队id和团队id,因此这里没有验证失败的问题
team_a_id = FactoryGirl.create(:team, name: "Team A").id
team_b_id = FactoryGirl.create(:team, name: "Team B").id

game = FactoryGirl.create(:game, team_a_id: team_a_id, team_b_id: team_b_id)