我是Ruby on Rails的新手。到目前为止,我只使用scaffolding创建了CRUD操作。现在,我需要使用脚手架将两个实体集成到单个表单中,而不是通过硬编码。
我们如何使用脚本将两个实体搭建在一起?
我有两个实体,Student_address和Student_phnumber。我希望将这两个实体搭建成可以执行CRUD操作的单一形式,并且我希望通过搭建来实现这一点。
Student_address是由Hse_name、Street_name等组成的实体。Student_phnumber另一个实体由ph_number、类型等组成。
我想把这两个实体放在一起。
发布于 2012-11-07 12:53:20
Scaffolding只不过是一个为模拟完整的基本资源而设置的generator。除了脚手架之外,还有许多其他的生成器默认情况下都带有Rails。它们都没有设置为为一组相关模型生成资源。我怀疑这在很大程度上是因为表达这种关系的方法范围很广,使得创建通用UI几乎是不可能的。此外,搭建更多的是为了让您快速启动和运行,并打算进行修改以满足您的需求。对于任何非平凡的应用程序,这些修改通常都是相当复杂的。有很多第三方生成器,包括流行的nifty generators,但据我所知,没有一个能创建您想要生成的代码。如果这是一个你需要经常建立的关系,你可以考虑创建一个你自己的生成器来处理这个任务--这实际上非常简单。一个很好的方法是实现你的理想情况,然后从它创建一个生成器。
编辑:
此外,您可能希望调整您的变量/属性名称。它们应该是小写的并带有下划线,这样Street_name就会变成street_name。任意的缩写也使得编码/维护变得非常困难,因此最好将Student_phnumber表示为student_phone_number。这样做的原因,除了一致性之外(例如,ph_number与Student_phnumber ),是因为Rails实际上使用了internal methods like these中的大小写和间距。
发布于 2012-11-11 06:10:02
让我看看我是不是听懂了。
您正在描述的模型/实体关系是:
student
address
- house_name
- street_name
- etc
phone_number
- number
- area_code
- etc您需要执行以下操作:
a)自动生成模型
b)自动生成具有创建学生的表单的控制器/视图,其中包括设置地址和电话号码的字段
好吧。b)不能通过Rails脚手架完成。但是,您可以使用ActiveSupport gem (docs here)来实现这一点。下面是你要做的:
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_numberActiveScaffold将做的是自动为您生成如下所示的视图:

填写该表单,您的模型将全部保存并链接在一起!
发布于 2012-10-29 12:26:07
这就是你要找的东西吗?
rails generate scaffold Student student_address:string student_phnumber:string
https://stackoverflow.com/questions/13115750
复制相似问题