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

如何使用scaffold创建多个一元关系?

  •  12
  • Simon  · 技术社区  · 16 年前

    我对RubyonRails是个新手,我正在尝试创建一个低音吉他导师来教自己RoR(和低音吉他)。演练使用scaffold创建ActiveRecord类,但它们似乎与独立的表相对应;没有使用 belongs_to has_many .

    我想创建三个类:scale、guitarstring和fret。每个音阶都有许多吉他弦,每个都有许多乐谱。

    如何使用scaffold创建具有这种关系的类?有没有一种方法可以一次性完成,或者我需要使用scaffold在不相关的状态下创建它们,然后手工添加关系?还是我应该完全抛弃脚手架?

    1 回复  |  直到 16 年前
        1
  •  17
  •   Zachary Wright José Valim    16 年前

    几周前,我开始学习Ruby on Rails,我发现不使用脚手架,从命令行(或IDE中的宏)生成不同的部分,更容易掌握事情的窍门,学习我的方法。

    然而,从我所知道的,当你使用脚手架生成东西时,你认为它生成了一个“资源”,所以你只需要一次创建一个资源,然后在以后手工添加关系。

    但是,generateModel命令可以为您创建这些关系。假设您使用脚手架创建了一个缩放资源。

    你可以那么做

    ruby script/generate model GuitarString name:string scale:references 
    

    比例:引用将创建一个 belongs_to :scale 在你的吉他弦模型,但你需要添加有很多:吉他弦到你的比例模型。

    generateModel命令还为您和其他需要的文件(fixture)创建一个迁移脚本,类似于scaffolding,但不会自动创建视图、控制器或任何东西。

    编辑:

    这通常是您想要做的事情-使用generate/model或generate/view或generate/controller或generate/migration。大多数Rails开发人员不使用脚手架,因为它的“一刀切”很少能完美地配合事物。然而,大多数Rails开发人员确实使用了我提到的生成命令——它节省了手工创建助手和设备的时间,并且为生成的每个文件提供了一个可以添加到其中的基本模板。

    一些RubyIDE,比如JetBrain的RubyMine,有一些宏可以执行这些命令。在rubymine中,您可以执行ctrl+alt+g,然后输入与要生成的内容对应的另一个键。

    正如我所提到的,可以通过使用“引用”这个词来生成属于关系。其他你会手工添加的。

    推荐文章