代码之家  ›  专栏  ›  技术社区  ›  sv_in

使用Rake为Rails引擎向数据库添加示例数据

  •  2
  • sv_in  · 技术社区  · 17 年前

    我正在尝试Rails引擎,通过创建一个Classifieds引擎,用户可以在其中查看/发布/回复Classifieds。

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

    现在我要为Classifieds引擎向数据库添加一些示例数据。所以我在“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”中。

    3 回复  |  直到 17 年前
        1
  •  1
  •   EmFi    16 年前

    你的任务看起来不错。唯一会导致任务自动失败的是您要传递给fixture.new的文件没有指向YML或CSV文件。

    通过修改PUT语句来打印导入文件的完整路径,并将其打印的内容与目录结构进行比较,从而进行双重检查。

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

        2
  •  9
  •   Damien MATHIEU    17 年前

    在Rails Edge中,可以使用 rake db:seed 向基础添加数据的功能。 See the commit .

    使用非常简单。

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

    例如:

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

    当你想在数据库中播种时,你可以做一个 RAKDB:种子

    如果出于任何原因,您不希望使用Edge(在生产环境中是可以理解的),则可以使用 Seed Fu 插件,这对你很有帮助。

        3
  •  0
  •   The Who    16 年前

    在Rails 2.3.4中添加了db:seed任务。所以不需要急于求成。

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

    推荐文章