0

型號contact.rb時:未初始化的不斷聯繫(NameError)嘗試添加一條記錄

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

Test.rb:

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

當我從終端運行test.rb我收到錯誤:

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

的database.yml:

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

我相信這是一個微不足道的問題。我已經搜索了這個論壇,但沒有提供任何線索。

讓我知道如果我必須輸入額外的信息來說清楚。

+0

你如何運行測試?來自終端的 – toro2k

+0

。我打算把它作爲一個計劃任務。 – Askar

回答

1

您不能簡單地運行ruby lib/tasks/test.rb,因爲Rails環境不會被加載。要解決這個問題,你需要使用rake任務。

您首先必須將文件lib/tasks/test.rb重命名爲lib/tasks/test.rake

然後,您需要將此添加到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 

然後,運行rake -T,它將列出所有可用的任務。

您將能夠通過rake contact:add啓動您的任務。

要安排您的任務在特定時間運行,您可能需要查看Whenever寶石。

希望它有幫助。

+0

謝謝,我知道每當寶石。當我按照上面的建議運行時,我收到了錯誤:rake中止了! 未初始化的常量Inflector /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:在'require'中 /home/askar/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13 /lib/rails/application.rb:103:in'require_environment!' ...我不能把所有的錯誤信息,因爲它很長。 – Askar

+0

你在config/environment.rb中有什麼?任何自定義語句? – Arkan

+0

哦,對不起,我在那裏發表了一篇自定義聲明。一旦我刪除它,它就起作用了。非常感謝! :) – Askar

相關問題