2

我正在通过创建分类引擎来尝试 Rails 引擎,用户可以在其中查看/发布/回复分类广告。

主应用程序包含用于用户身份验证和配置文件的代码,而我创建的引擎将处理分类功能。

现在我想将一些示例数据添加到分类引擎的数据库中。所以我在'vendor/plugins/classifieds/lib/tasks'中创建了一个名为'sample_classifieds_data.rake'的rake文件,并在'vendor/plugins/classifieds/lib/tasks/sample_classifieds_data'中添加了yml文件

rake 文件的代码和一个示例 yml 文件可以在这里找到:http: //gist.github.com/216776

现在的问题是,当我运行 rake 任务时,没有抛出任何错误,但是数据库中没有填充值。

有任何想法吗?顺便说一句,它是开发环境,数据库是开发数据库。

我运行了一个类似的 rake 任务来填充数据库中有效的示例用户。该 rake 文件“sample_data.rake”的位置位于“lib/tasks”中。

4

3 回答 3

9

在 rails edge,您可以使用该rake db:seed功能将数据添加到您的基础。查看提交

使用非常简单。

创建一个db/seeds.rb文件。
并在其中放入您想要为数据库播种的任何代码。

例如 :

Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')

当你想为你的数据库做种时,你可以做一个rake db:seed

如果出于任何原因,您不想使用 edge(这在生产环境中可以理解),您可以使用Seed Fu插件,它非常适合您。

于 2009-10-23T09:58:15.903 回答
1

你的任务看起来不错。唯一会导致您的任务静默失败的是您传递给 Fixture.new 的文件不指向 yml 或 csv 文件。

通过修改 put 语句以打印它导入的文件的完整路径进行仔细检查,并将它打印的内容与您的目录结构进行比较。

例如,如果您的夹具文件以大写字母开头,事情会默默地失败吗?Categories.yml 而不是 categories.yml

于 2009-10-23T16:34:50.127 回答
0

db:seed 任务是在 Rails 2.3.4 中添加的。所以不需要运行边缘。

http://weblog.rubyonrails.org/2009/9/4/ruby-on-rails-2-3-4

于 2009-10-23T17:29:08.193 回答