6

语境

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

one:
  title: MyString
  text: MyText

two:
  title: MyString
  text: MyText

问题

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

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

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

原因

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

rails generate scaffold student

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

4

3 回答 3

5

只是对您的问题的一些快速说明:

Fixtures 是可以输入到单元测试中的数据。只要 rails 为您的控制器和模型生成相应的测试,它们就会自动创建。它们仅用于您的测试,并且在运行应用程序时实际上无法访问。

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

回答:

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

rails d scaffold Student

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

rails g scaffold Student name:string
于 2013-08-19T04:04:07.367 回答
1

我首先要说的是,该rails generate命令生成的代码旨在成为您的应用程序部分的起点,帮助您快速上手。

也就是说 - 固定装置旨在用于单元测试。它们为您提供了一种方法来生成系统中已经存在的一组对象,因此您不必在测试开始时手动创建它们。

在这种情况下,oneandtwo只是占位符。在真正的应用程序中,您可以将它们替换为在您的测试中更有意义的名称。

如果您希望在应用程序中添加数据列,固定装置可能不是正确的方法。它们实际上是用于测试的,仅此而已。

于 2013-08-19T00:00:47.837 回答
1

尝试这个:

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

rails d scaffold Student

b) Creating it again but this time with the keys you want:

rails g scaffold Student name:string
于 2013-10-21T19:27:27.073 回答