我有一个模型,其中primary_id是实际的primary_key,而id列不是auto_increment且不能为null
在FactoryGirl,我有:
sequence(:primary_id) {|n| n}
sequence(:id) {|n| n}
但是当我尝试运行它时,我得到了
ActiveRecord::StatementInvalid: Mysql2::Error: Column 'id' cannot be null: ...
包含尝试插入但没有设置id列的记录。 我在其他问题中看到这是因为ActiveRecord的写入会自动使用:id来使用primary_key。如果不是覆盖它或更改列名的选项,那么使FactoryGirl工作的“正确”方法是什么?
答案 0 :(得分:1)
不要依赖于ID。你的工厂应该看起来像:
FactoryGirl.define do
factory :foo do
primary_id { 1 }
end
end
还请阅读其中一个FactoryGirl教程,例如:FactoryGirl Tips and Tricks