Rails Fixtures - 这些是什么意思?

sih*_*hrc 5 ruby-on-rails fixtures

语境

当我生成夹具文件时,rails generate model Post title:string text:text它显示:

one:
  title: MyString
  text: MyText

two:
  title: MyString
  text: MyText
Run Code Online (Sandbox Code Playgroud)

我想知道为什么有 2,为什么它们被命名为“一”和“二”。

在这里,我看到使用了“google”、“rubyonrails”和“parent/child”等名称;而按照生成帖子模型的教程,它只会生成一两个......

经过更多研究,我发现我可能也对 db/migrate 文件感兴趣。我目前的理论是这些文件创建了我的数据结构......所以我不太确定夹具的作用。

原因

我正在尝试使用创建“学生”模型

rails generate scaffold student
Run Code Online (Sandbox Code Playgroud)

但它似乎没有 :name 作为其键之一。我正在研究夹具以添加数据列。

Ron*_*han 5

关于您的问题的一些快速说明:

Fixtures 是可以提供给单元测试的数据。每当 rails 为您的控制器和模型生成相应的测试时,它们就会自动创建。它们仅用于您的测试,在运行应用程序时实际上无法访问。

默认情况下,Rails 每次都提供两个名为 'one' 和 'two' 的设备。您可以随意更改它们,此外,当您在使用生成器时传递所需的数据库列的键时,会生成进入夹具的数据。在第一个示例中,您使用了 rails g model Post title:string... 您创建了一个名为 Post 的模型并传入了两个键::title 和 :text。

回答:

至于您的最后一个问题,您可以通过以下方式快速解决问题: a) 通过在命令行中键入以下内容来删除旧的脚手架:

rails d scaffold Student
Run Code Online (Sandbox Code Playgroud)

b) 再次创建它,但这次使用您想要的密钥:

rails g scaffold Student name:string
Run Code Online (Sandbox Code Playgroud)

  • 最佳实践是通过创建迁移将列添加到数据库中(查看 http://guides.rubyonrails.org/migrations.html#creating-a-migration)。这个习惯特别好,因为当你部署到生产环境时,你不会有仅仅删除数据库的奢侈(因为如果你删除他们的信息,人们会生气)。我说删除脚手架并重新生成它的原因是因为从您在这里所说的来看,您似乎还没有填充数据库。 (2认同)