繁体   English   中英

Ruby on Rails中的复合实体脚手架

[英]Composite entity scaffolding in Ruby on Rails

我是Ruby on Rails的新手。 到目前为止,我只使用脚手架创建了CRUD操作。 现在,我需要使用脚手架将两个实体集成到单个表单中,而不是通过硬编码。

我们如何使用脚本将两个实体组合在一起?

我有两个实体,Student_address和Student_phnumber。 我想将这两个实体搭建成一个单独的表单,我可以在其中进行CRUD操作,我想通过脚手架来实现这一点。

Student_address是由Hse_name,Street_name等组成的实体.Cudert_phnumber由ph_number,type等组成的另一个实体。

我想将这两个实体组合在一起。

脚手架只不过是一个用于建模完整基础资源的发电机 除了脚手架之外,还有许多其他生成器,默认情况下随Rails一起提供。 它们都没有设置为为一组相关模型生成资源。 我怀疑其中很大一部分原因是由于表达这种关系的方法种类繁多,因此创建通用UI几乎是不可能的。 此外,脚手架更多的设置可以让您快速启动和运行,并打算根据您的需要进行修改。 这些修改通常适用于任何非平凡的应用程序。 有很多第三方生成器,包括流行的漂亮生成器 ,但据我所知,没有一个可以生成你想要生成的代码。 如果这是您需要经常设置的关系,您可以考虑创建自己的生成器来处理任务 - 实际上非常简单。 一个好方法是实现理想的情况,然后从中创建一个生成器。

编辑:

此外,您可能希望调整变量/属性名称。 它们应该是小写的并且是强调的,因此Street_name将成为street_name 任意缩写也使代码/维护非常困难,因此Student_phnumber将更好地表示为student_phone_number 除了一致性(例如, ph_numberStudent_phnumber )之外,这样做的原因是Rails实际上在这些内部方法中使用了套管和间距。

让我看看我是否了解你。

您描述的模型/实体关系是:

student
   address
    - house_name
    - street_name
    - etc
   phone_number
    - number
    - area_code
    - etc

你想要:

a)自动生成模型

b)自动生成带有表单的控制器/视图以创建学生,包括设置地址和电话号码的字段

好的。 b)不能通过Rails脚手架完成。 但是,您可以使用ActiveSupport gem( 此处docs )来实现此目的。 这是你做的:

gem install active_scaffold
rails g active_scaffold Student name:string
rails g active_scaffold PhoneNumber area_code:integer number:integer student_id:integer
rails g active_scaffold Address first_line:string second_line:string student_id:integer

您在此处必须完成的唯一手动工作是弹出模型并添加关系:

Address
 belongs_to :student
PhoneNumber
 belongs_to :student
Student
 has_one :address
 has_one :phone_number

ActiveScaffold将自动为您生成如下视图:

在此输入图像描述

填写该表格,您的模型将全部保存并链接在一起!

这是你想要的?

rails generate scaffold Student student_address:string student_phnumber:string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM