2011-01-27 4 views
14

Je travaille sur le site (excellent) railstutorial.org, j'ai une question basique sur rspec. Lorsque j'exécute le test ci-dessous sur un nouveau modèle utilisateur, j'obtiens un message "attribut inconnu: nom d'utilisateur" et un test échoué.rspec, attribut inconnu question

before(:each) do 
    @attr = { :lname_e => "User", :fname_e => "Test", :email => "[email protected]", :username => "testUser" } 
    end 

    it "should create a new instance given valid attributes" do 
    User.create!(@attr) 
    end 

syntaxe d'erreur est

Failures: 
    1) User should create a new instance given valid attributes 
    Failure/Error: User.create!(@attr) 
    unknown attribute: username 
    # ./spec/models/user_spec.rb:11:in `block (2 levels) in <top (required)>' 

Le champ est dans la table des utilisateurs (chaîne), il est dans le modèle comme attr_accessible et dans la console, je peux créer un utilisateur avec exactement la même syntaxe dans la tester. Ce champ "nom d'utilisateur" a été ajouté via une migration après avoir créé la table initiale, y a-t-il un autre fichier que je dois mettre à jour ici?

Merci,

Répondre

26

Avez-vous exécuté rake db:test:prepare?

20

Le champ peut être absent de votre base de données de test, mais présent dans votre base de données de développement (ce qui est la raison pour laquelle la console fonctionne).

Essayez de faire que vos migrations sont tous à jour et mettre à jour la base de données de test:

rake db:migrate 
rake db:test:prepare 
+0

Oui, c'était tout. Merci – nktokyo

Questions connexes