ana*_*rce 5 ruby mysql ruby-on-rails-3
我正在通过Ruby on Rails 3将数据从CSV文件导入MySQL数据库.客户模型已经创建.此外,下面的脚本将生成puts row [2]并正确放置row [3].当我为customers.warranty_part_no和warranty_part_desc的数据库字段添加分配时,会产生以下错误.
csv = CSV.read(file, col_sep: ",", headers: false)
c = Customer.new
csv.each do |row|
c.warranty_part_no = row[2],
c.warranty_part_desc = row[3]
end
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误.
uninitialized constant Customer (NameError)
Run Code Online (Sandbox Code Playgroud)
经过一些测试后,我认为这个问题是因为我从命令行运行这个脚本,因此没有使用更大的rails应用程序执行customer.rb模型,因此永远不会创建Customer类.如何从命令行运行此脚本并利用ActiveRecord或activerecord-import?如果那是不可能的,我该如何为它创建路径或从应用程序中的视图调用它?
我在Ruby 1.9.2和Rails 3.2.2上.提前感谢任何建议.
正如您所发现的,问题在于您的 Rails 环境未加载。您可以在独立脚本中执行此操作,方法是包含 Customer 模型、active_record 并使用 database.yml 建立连接。
然而,还有一个更简单的方法。像这样创建一个 rake 任务:
namespace :data do
desc "Import data from CSV"
task :import => :environment do
#Your script here
end
end
Run Code Online (Sandbox Code Playgroud)
它=> :environment告诉 rake 加载 Rails,以便您的数据库连接和所有模型都可供您使用。
使用 调用它rake data:import,RAILS_ENV=production如果需要生产环境,请添加。
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |