0

型号contact.rb:

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

测试.rb:

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

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

lib/tasks/test.rb:1:in `': 未初始化的常量 Contact (NameError)

数据库.yml:

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

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

让我知道我是否必须输入其他信息以使其清楚。

4

1 回答 1

1

您不能简单地运行ruby lib/tasks/test.rb,因为不会加载 Rails 环境。要解决此问题,您需要使用 rake 任务。

您首先必须将文件重命名lib/tasks/test.rblib/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。

希望能帮助到你。

于 2013-06-18T08:54:47.207 回答