【问题标题】:Rails Fixtures - what do these mean?Rails Fixtures - 这些是什么意思?
【发布时间】:2013-08-20 17:13:47
【问题描述】:

上下文

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

one:
  title: MyString
  text: MyText

two:
  title: MyString
  text: MyText

问题

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

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

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

原因

我正在尝试使用

创建一个“学生”模型
rails generate scaffold student

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

【问题讨论】:

    标签: ruby-on-rails fixtures


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的快速回复!我会改用class CreateStudents < ActiveRecord::Migration 之类的东西吗?
    • 不完全。迁移是正确的,但它看起来有点不同。这里有完整的解释:guides.rubyonrails.org/migrations.html
    【解决方案2】:

    只是对您的问题的一些简短说明:

    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
    

    【讨论】:

    • 感谢您的贡献。是否还有一个文本文件可以编辑以更改学生课程?删除和重新制作学生似乎不是“正确”的做法。当然,我不知道。
    • 最佳实践是通过创建迁移将列添加到数据库中(查看guides.rubyonrails.org/migrations.html#creating-a-migration)。这种习惯特别好,因为当您部署到生产环境时,您将无法只删除数据库(因为如果您删除他们的信息,人们会生气)。我说删除脚手架并重新生成它的原因是因为从你这里所说的来看,你似乎还没有填充数据库。
    • 我明白了。感谢您的帮助!
    【解决方案3】:

    试试这个:

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

    rails d scaffold Student
    
    b) Creating it again but this time with the keys you want:
    
    rails g scaffold Student name:string
    

    【讨论】:

      猜你喜欢
      • 2013-05-09
      • 2014-12-24
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 2023-03-03
      • 2017-08-24
      相关资源
      最近更新 更多