【发布时间】:2018-03-08 15:51:28
【问题描述】:
我有两个模型:
class Language < ActiveRecord::Base
self.primary_key = 'language_id'
has_many :results_footers
end
class ResultsFooter < ActiveRecord::Base
belongs_to :language
end
工厂:
# spec/factories/languages.rb
FactoryBot.define do
factory :language do
sequence(:language_id)
end
end
测试:
# spec/models/results_footer.rb
require 'rails_helper'
RSpec.describe ResultsFooter, :type => :model do
it 'has a valid factory' do
create(:results_footer).should be_valid
end
end
results_footer 表是一个 mysql 表,其 language_id 字段具有 fk 约束。
当我运行测试时,我得到:
ActiveRecord::InvalidForeignKey:
Mysql2::Error: 无法添加或更新子行:外键约束失败 (thing_dev.results_footers, CONSTRAINT results_footers_ibfk_2 FOREIGN KEY (language_id) REFERENCES language (language_id) ON UPDATE CASCADE ): INSERT INTO results_footers (language_id, grade, content, exam_type_id) VALUES (1, 'D', 'Hello World', 104)
当然,如果我删除约束,它会起作用。但删除约束不是一种选择。
奇怪的是,我还有许多其他具有类似 fk 约束的表,并且它们的关联有效。
我的协会有什么问题?
谢谢
【问题讨论】:
标签: mysql ruby-on-rails rspec associations factory-bot