gpt4 book ai didi

ruby-on-rails - 如何使用 Scaffold 创建多对一关系?

转载 作者:行者123 更新时间:2023-12-04 00:51:16 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

然后你可以做

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

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

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

编辑:

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

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

正如我提到的,belongs_to 关系可以通过使用“references”这个词来生成。其他您将手动添加。

关于ruby-on-rails - 如何使用 Scaffold 创建多对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2575201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com