12

我是 Ruby on Rails 的新手,我正在尝试创建一个低音吉他导师,以便自学 RoR(和低音吉他)。演练使用 Scaffold 创建 ActiveRecord 类,但它们似乎对应于独立表;没有用belongs_toor has_many

我想创建三个类:Scale、GuitarString 和 Fret。每个音阶都有许多 GuitarStrings,每个都有许多 Frets。

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

4

1 回答 1

17

几周前我开始学习 Ruby on Rails,我发现通过不使用脚手架并从命令行(或在IDE)。

但是,据我所知,当您使用脚手架生成事物时,您会将其视为生成“资源”,因此您一次只会创建一个资源,然后再手动添加关系。

但是,生成模型命令可以为您创建这些关系。假设您使用脚手架创建了 Scale 资源。

然后你可以做

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

scale:references 将belongs_to :scale在您的 GuitarString 模型上创建一个,但您需要将 has_many :guitarstrings 添加到您的比例模型中。

生成模型命令还为您和其他需要的文件(夹具)创建迁移脚本,类似于脚手架,但不会自动创建视图或控制器或任何东西。

编辑:

这通常是您想要做的事情 - 使用生成/模型或生成/查看或生成/控制器或生成/迁移。大多数 Rails 开发人员不使用脚手架,因为它的“一刀切”很少能完美地适应事物。但是,大多数 Rails 开发人员确实使用了我提到的生成命令——它可以节省手动创建帮助程序和固定装置的时间,并且它为每个文件提供了一个可以添加的基本模板。

像 JetBrain 的 RubyMine 这样的几个 Ruby IDE 具有基本上执行这些命令的宏。在 RubyMine 中,您可以执行 ctrl+alt+g,然后输入与您要生成的内容相对应的另一个键。

如前所述,belongs_to 关系可以通过使用“references”一词来生成。其他您将手动添加。

于 2010-04-04T17:23:41.823 回答