Rails.application.load_seed有效,但rake db:seed没有

时间:2011-09-11 09:08:56

标签: ruby-on-rails seed rails-console

rake环境和控制台环境有什么区别?

我正在尝试使用带有rails 3.1.0的csv文件来播种mysql数据库。 它曾经是ActiveRecord :: Fixtures的一块蛋糕。不幸的是,csv fixture在rails 3.1中被折旧了。

所以我使用csv-mapper 0.5.1在我的config / initializers中编写了load_fixture.rb。但是,它不适用于

$ rake db:seed

种子代码运行没有错误。它只是不加载任何数据。

当我将种子代码复制到rails控制台或黄瓜步骤时,它可以完美地工作。它甚至适用于

> Rails.application.load_seed

在rails控制台中。怎么会发生这种情况?

load_fixture.rb:

require 'csv-mapper'
include CsvMapper
def load_fixture(file)
  fname = File.basename file.chomp(File.extname file)
  modelname = fname.camelize.singularize.constantize
  results = import(file) do
    map_to modelname
    after_row lambda{|row, item| item.save! } 
    start_at_row 1
    read_attributes_from_file     
  end
end

seed.rb(简化)

load_fixture("path-to-csv-file")

0 个答案:

没有答案