Factory Girl为关联中的自动增量ID设置了错误的值

时间:2011-11-15 15:40:58

标签: ruby-on-rails-3 cucumber auto-increment factory-bot

我有两个具有一对多关联的依赖模型

class Post < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :post
end
我在post_id表中的users中的

被定义为外键

我写了两个黄瓜场景 - 首先我(使用factory_girl帮助)创建两个用户,然后我还想创建两个用户,但创建失败,因为factory_girl使用{{post构建了依赖id记录1}}设置为1但是在上一个方案中,posts表中的两个记录已创建并删除,因此id值应从3开始,而不是从1开始。我使用pry来调试此过程并发现如果我使用FactoryGirl.build( :post )它会正确设置值,但如果我使用FactoryGirl.build( :user )关联post.id的值始终为1 }。如何使用正确的id

制作详细记录

修改

FactoryGirl.define do 

  sequence :composite_id do |n| 
    "F98F3806-#{sprintf("%04X", n)}-4C96-879C-2C6F38213D8E"
  end

  # Post 
  factory :post do
    sequence( :post_id ) { |n| "#{n}" }
    some_field "Lorem Ipsum is simply dummy text of the printing a"
    ...
  end

  # User
  factory :user do
    user_id { FactoryGirl.generate( :composite_id )}
    association :post_id, :factory => :post
    ...
  end

end

1 个答案:

答案 0 :(得分:2)

那应该是association :post。 FactoryGirl将找出ID字段。