2011-11-15 61 views
2

自动递增ID值错误,我有两个相关的模型与一对多关联工厂女孩设置了关联

class Post < ActiveRecord::Base 
    has_many :users 
end 

class User < ActiveRecord::Base 
    belongs_to :post 
end 

在我DBMS在userspost_id被定义为外键

我写了两个黄瓜的场景 - 首先我(与factory_girl帮助)创建两个用户,第二我也想创建两个用户,但创建失败,因为factory_girl建立依赖post记录与id设置为一个但前面的场景两个记录在posts表已创建并删除,所以id值应从3开始,而不是从1开始。我用pry来调试这个过程,并发现如果我使用FactoryGirl.build(:post)它正确设置值,但如果我使用FactoryGirl.build(:user)值相关的post.id总是1。我如何使用适当的id来制作buld记录?

编辑

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 
+0

你的工厂文件是什么样的? –

+0

请检查更新,谢谢。 – Bohdan

回答

2

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