12

我对 Ruby on Rails 很陌生。不知道这个seed.rb文件的作用是什么,为什么要用这个文件,为什么需要运行rake db:seed命令。任何人都可以举例说明吗?

4

2 回答 2

25

引导数据

种子数据的目的是引导您的数据库。例如,如果您有一个用于跟踪用户所在城市和州的 users 表,您可能希望在创建第一个用户之前使用美国州名和缩写为相关表播种。

同样,您可能还希望播种诸如管理帐户之类的内容,或首次运行您的应用程序所需的其他数据。作为一般规则,您不应该向 seed.rb 文件添加任何不需要引导您的数据库或其关系的内容。

相关的 Rake 任务

seed.rb 文件是存储种子数据的地方,但您需要运行适当的 rake 任务才能实际使用种子数据。在您的项目目录中使用rake -T会显示有关以下任务的信息:

  • rake db:seed
    从 db/seeds.rb 加载种子数据
  • rake db:setup
    创建数据库,加载模式,并使用种子数据进行初始化
  • rake db:reset
    rake db:setup,但先删除数据库

因此,您可以rake db:seed随时手动运行seeds.rb 文件。但是,在大多数情况下,您可能希望在引导应用程序时运行rake db:setup或改为运行。rake db:reset

于 2012-12-09T16:17:20.600 回答
1

seed.rb 文件的目的非常简单,它允许我们通过使用语法写入文件来接受(模型)数据库中的数据,并在 rake 任务之后填充它,因为我们使用控制器、模型通过表单输入这些数据. 例如:

Country.create(name: 'Germany', population: 81831000)
Country.create(name: 'France', population: 65447374)
Country.create(name: 'Belgium', population: 10839905)
Country.create(name: 'Netherlands', population: 16680000)

之后: rake db:seed rake db:setup

于 2018-03-13T12:30:37.607 回答