[英]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_number
与Student_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.