2009-10-23 93 views
2

我正在尝试通过创建分类引擎来引导用户可以查看/发布/回复分类的Rails引擎。使用rake for rails引擎添加示例数据到数据库

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

现在我想添加一些示例数据到分类引擎的数据库。所以,我在创建一个名为“sample_classifieds_data.rake”耙文件“供应商/插件/分类/ lib目录/任务”,我加的YML文件的供应商/插件/分类/ lib中/任务/ sample_classifieds_data“

代码的rake文件和样本yml文件可以在这里找到:http://gist.github.com/216776

现在的问题是,当我运行rake任务时,没有错误被引发,但值不会填充到数据库中。

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

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

回答

1

你的任务看起来不错。关于唯一的事情会导致你的任务失败默默无闻,你传递给Fixture.new的文件不会指向yml或csv文件。

通过修改put语句来双击打印它导入的文件的完整路径,并比较它打印的目录结构。

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

+0

雅,是我的错...... :) – 2009-12-08 06:19:20

9

在导轨边缘,您可以使用rake db:seed功能将数据添加到您的底座。 See the commit

使用非常简单。

创建一个db/seeds.rb文件。
并把你想要的种子你的数据库中的任何代码。

例如:

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

而当你想要种子数据库,你可以做一个rake db:seed

如果出于任何原因,你不希望使用边缘(这将是理解在生产环境中),您可以使用Seed Fu插件,这对您来说确实很有用。

0

在Rails 2.3.4中添加了db:seed任务。所以不需要跑边。

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

+0

我使用的,因为这个错误的Rails 2.3.2:https://rails.lighthouseapp.com/projects/8994/tickets/2948 -exception-a-copy-of-actorscontroller-has-removed-from-the-module-tree-but-is-still-active 所以我不能使用inbuilt db:seed .. :( – 2009-10-26 09:37:21