FactoryGirl id不是primary_key

时间:2014-09-09 03:31:35

标签: ruby-on-rails activerecord factory-bot

我有一个模型,其中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工作的“正确”方法是什么?

1 个答案:

答案 0 :(得分:1)

不要依赖于ID。你的工厂应该看起来像:

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

还请阅读其中一个FactoryGirl教程,例如:FactoryGirl Tips and Tricks