尝试添加记录时未初始化的常量Contact(NameError)

时间:2013-06-18 08:17:25

标签: ruby ruby-on-rails-3 sqlite activerecord uninitialized-constant

模型contact.rb:

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

Test.rb:

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

当我从终端I运行test.rb时收到错误:

  

lib / tasks / test.rb:1:在`&#39;:未初始化的常量联系人   (NameError)

database.yml中:

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

我认为这是一个微不足道的问题。我已经搜索了这个论坛,但它没有提供任何线索。

如果我必须输入其他信息以便明确说明,请告诉我。

1 个答案:

答案 0 :(得分: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 gem。

希望它有所帮助。