0

Modèle contact.rb:Contactez-Uninitialized constante (NameError) lorsque vous essayez d'ajouter un enregistrement

class Contact < ActiveRecord::Base 
    attr_accessible :name, :phone 
end 

test.rb:

Contact.create({:name => "Josh", :phone => "123-456789"}) 

Quand je lance test.rb du terminal que je reçois l'erreur:

lib/tasks/test.rb:1:in `': uninitialized constant Contact (NameError)

database.yml:

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

Je crois que c'est une question triviale. J'ai cherché sur ce forum, mais il n'a pas donné d'indice à ce sujet. Faites-moi savoir si je dois entrer des informations supplémentaires pour clarifier les choses.

+0

Comment lancez-vous le test? – toro2k

+0

depuis le terminal. Je prévois d'en faire une tâche planifiée. – Askar

Répondre

1

Vous ne pouvez pas exécuter simplement ruby lib/tasks/test.rb car l'environnement Rails ne sera pas chargé. Pour résoudre ce problème, vous devez utiliser une tâche rake. Vous devez d'abord renommer votre fichier lib/tasks/test.rb pour le lib/tasks/test.rake.

Ensuite, vous devez ajouter ceci à test.rake.

namespace :contact do # This is not require. It can work without having to nest your task within a namespace. 
    desc 'Add contact' 
    task 'add' => [:environment] do #Here, we specify we want to load the environment 
    Contact.create({:name => "Josh", :phone => "123-456789"}) 
    end 
end 

Ensuite, exécutez rake -T qui répertoriera toutes les tâches disponibles. Vous pouvez lancer votre tâche avec rake contact:add.

Pour planifier l'exécution de votre tâche à une heure spécifique, vous pouvez jeter un œil à la gemme Whenever.

Espérons que ça aide.

+0

merci, je suis au courant de la gemme Whenever. Quand je cours en suivant votre conseil ci-dessus j'ai reçu l'erreur: rake a avorté! Constante non initialisée Inflecteur /home/askar/Dropbox/rails_studio/sqltest/config/environment.rb:7:in ' ' /home/askar/.rvm/gems/ruby-1.9.3- p429/gems/railties-3.2.13/lib/rails/application.rb: 103: dans 'require ' /home/askar/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13 /lib/rails/application.rb:103:in 'require_environment! ' ... Je ne pouvais pas mettre tout le message d'erreur car il est long. – Askar

+0

Qu'est-ce que vous avez dans config/environment.rb? Toute déclaration personnalisée? – Arkan

+0

Oh, désolé, j'avais une déclaration personnalisée là-bas, avant de faire ce post. Une fois que je l'ai supprimé, cela a fonctionné. Merci beaucoup! :) – Askar

Questions connexes