2011-11-15 3 views
2

J'ai deux modèles dépendants avec un à plusieurs associationFactory Girl définit une valeur incorrecte pour id auto-incrément en association

class Post < ActiveRecord::Base 
    has_many :users 
end 

class User < ActiveRecord::Base 
    belongs_to :post 
end 

dans mon SGBD post_id dans le tableau users est défini comme une clé étrangère

I écrit deux scénarios de concombre - en premier je (avec l'aide de factory_girl) créer deux utilisateurs et en second je veux aussi créer deux utilisateurs mais la création échoue parce que factory_girl construit dépend des enregistrements post avec id mis à un cependant dans le scénario précédent deux enregistrements en posts table ont été créés et supprimés donc id valeur devrait commencer à partir de 3 et non de 1. J'ai utilisé pry pour déboguer ce processus et repéré que si j'utilise FactoryGirl.build(:post) il définit la valeur correctement, mais si j'utilise la valeur FactoryGirl.build(:user) du post.id associé est toujours . Comment puis-je faire buld records avec id?

EDIT

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

À quoi ressemble le fichier de votre usine? –

+0

S'il vous plaît vérifier la mise à jour, merci. – Bohdan

Répondre

2

Ce devrait être association :post. FactoryGirl va trouver le champ ID.

Questions connexes