2014-09-12 3 views
1

je une usine simple, actuellement définie comme:Factory Girl Utilisation des propriétés multiples Remplacer

factory :tm_event do 
    ... 
    category "MyString" 
    category_id { Random.rand(1..2147483647) } 
    ... 
end 

Je tente de créer un objet TmEvent ce qui suit:

FactoryGirl.create(:tm_event, category: 'rock', category_id: '12') 

Lorsque cela est géré à la fois la catégorie et category_id sont définis sur nil dans l'objet résultant.

Si je cours avec chaque catégorie ou chaque ID de catégorie défini individuellement, les deux instances sont définies avec la propriété correspondante remplacée. Lorsque je crée directement un événement TmEvent.create(category: 'rock', category_id:'12'), les deux attributs sont remplis.

Ma syntaxe est-elle correcte? Où devrais-je chercher une solution?

+1

Qu'est-ce que 'tm_event'? Qu'est-ce que la catégorie? Pouvez-vous s'il vous plaît partager ce modèle. Je pense que ce que vous essayez de faire est de créer une catégorie avec le 'tm_event'. –

+0

@RyanBigg tm_event est un objet ActiveRecord Model avec category est une chaîne et category_id est un entier. Changer la chaîne de l'id en un entier, dans la méthode create, ne fait pas non plus de différence. – Richbits

Répondre

1

Votre syntaxe semble correcte. Je viens d'essayer la même chose dans ma console. Il met à jour les deux attributs.

2.1.2 :010 > FactoryGirl.build(:user) 
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$10$WnXKcpKZt0kkkXyRRe/QP.NS7mIaFcgFzCpZhW0hzEO...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, god: nil, name: "Test User 123", sash_id: nil, level: 0, confirmation_token: nil, confirmed_at: "2014-09-12 11:58:28", confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil> 
2.1.2 :011 > FactoryGirl.build(:user, email: '123', sign_in_count: 2) 
=> #<User id: nil, email: "123", encrypted_password: "$2a$10$JIjhQp40Lz/2fCskW63lzOHHxV2NwX2h5URswbuZsgH...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 2, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, god: nil, name: "Test User 123", sash_id: nil, level: 0, confirmation_token: nil, confirmed_at: "2014-09-12 11:58:28", confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil> 
2.1.2 :012 > 

Essayez dans votre console.

+0

Merci, je ne pensais pas que c'était une mauvaise syntaxe car je l'utilise ailleurs, mais avec des types différents. – Richbits

Questions connexes