Rails:由于外键验证,一对多关联失败

5

我在rails中建立了一对多关联,但我的测试一直在因为外键没有正确设置而失败。我想知道是否有人有建议。

我有两个模型-轮班和用户。我希望一个轮班由一个用户“创建”。一个用户可以创建多个轮班。

测试失败

*在rota_spec中:*

it {should belong_to :creator}
Expected Rota to have a belongs_to association called creator (Rota does not have a creator_id foreign key.)

*在user_spec中*

it {should have_many :created_rotas}
Expected User to have a has_many association called created_rotas (Rota does not have a creator_id foreign key.)

Rota.rb

  belongs_to :creator, :class_name => "User"

User.rb

  has_many :created_rotas, :class_name => "Rota", :foreign_key => "creator_id"

迁移

class AddCreatorToRotas < ActiveRecord::Migration
  def change
    add_column :rotas, :creator_id, :string
  end
end

1
你在测试环境中迁移了数据库吗? - Dougui
啊 - 不!该死!那可能就是了! - Karan
我只迁移了主数据库 - rake db:migrate。如果您将其发布为答案,我会将其标记为已接受 :) - Karan
2
创建者 ID 应该是整数类型吧? - bento
1个回答

11

你必须运行

rake db:test:prepare

谢谢!它起作用了,但为什么? 有人能解释一下吗? 我尝试了将近两个小时来修复这个问题。 - Zan Zas
1
它会加载 db/schema.rb 中的代码。您可以查看 https://guides.rubyonrails.org/v3.2/testing.html - Dougui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接