Ruby on rails FactoryGirl id不是主键

Ruby on rails FactoryGirl id不是主键,ruby-on-rails,activerecord,factory-bot,Ruby On Rails,Activerecord,Factory Bot,我有一个模型,它的primary_id是实际的primary_键,id列不是自动递增的,不能为null 在FactoryGirl,我有: sequence(:primary_id) {|n| n} sequence(:id) {|n| n} 但当我试着运行它时,我得到了 ActiveRecord::StatementInvalid: Mysql2::Error: Column 'id' cannot be null: ... 尝试插入的记录未设置id列。 我在其他问题中看到,这是因为Acti

我有一个模型,它的primary_id是实际的primary_键,id列不是自动递增的,不能为null

在FactoryGirl,我有:

sequence(:primary_id) {|n| n}
sequence(:id) {|n| n}
但当我试着运行它时,我得到了

ActiveRecord::StatementInvalid: Mysql2::Error: Column 'id' cannot be null: ...
尝试插入的记录未设置id列。
我在其他问题中看到,这是因为ActiveRecord的write将自动使用:id来使用主键。如果不能覆盖此选项或更改列名,那么让FactoryGirl工作的“正确”方法是什么?

不要依赖ID。你的工厂应该是这样的:

FactoryGirl.define do
  factory :foo do
    primary_id { 1 }
  end
end

还请阅读其中一篇FactoryGirl教程,例如:

不幸的是,这与现有的模式有关。感谢您关注最佳实践,但是不再使用id可能不会改变,我的问题是,尽管rails决定将:id键转换为主键,但如何访问id列。id不会自动设置,但不能为null,因此不能忽略它。