我是Ruby on Rails的新手,我正在尝试创建一个低音吉他导师,以便自学RoR(和低音吉他)。演练使用Scaffold创建ActiveRecord类,但它们似乎对应于独立表;没有使用belongs_to
或has_many
。
我想创建三个类:Scale,GuitarString和Fret。每个Scale都有许多GuitarStrings,每个都有许多Frets。
如何使用Scaffold创建具有此关系的类?有没有办法一次性完成,或者我是否需要使用Scaffold在不相关的状态下创建它们,然后手动添加关系?或者我应该完全抛弃脚手架?
答案 0 :(得分:17)
几个星期前我开始学习Ruby on Rails,我发现通过不使用脚手架,从命令行生成各种部分(或者IDE中的宏。)
但是,从我所知,当你使用脚手架来生成东西时,你会认为它是生成“资源”,因此你只需要一次创建一个资源,然后通过以下方式添加关系:以后再说。
但是,generate model命令可以为您创建这些关系。假设您使用scaffolding来创建Scale资源。
然后你可以做
ruby script/generate model GuitarString name:string scale:references
比例:引用将在您的GuitarString模型上创建belongs_to :scale
,但您需要将has_many:guitarstrings添加到比例模型中。
generate model命令还为您和其他所需文件(灯具)创建了一个迁移脚本,类似于脚手架,但不会自动创建视图或控制器或其他任何内容。
修改强>
这通常是您想要做的事情 - 使用generate / model或generate / view或generate / controller或generate / migration。大多数Rails开发人员不使用脚手架,因为它的“一刀切”很少能很好地适应所有事情。但是,大多数rails开发人员都使用我提到的generate命令 - 它可以节省创建帮助程序和fixture的时间,并为每个文件生成一个可以添加的基本模板。
像JetBrain的RubyMine这样的几个Ruby IDE都有基本上执行这些命令的宏。在RubyMine中,您可以执行ctrl + alt + g,然后输入与您要生成的内容相对应的另一个键。
如我所提到的,可以使用“引用”字生成belongs_to关系。您将手动添加的其他人。