7

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

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

我有两个实体,Student_address 和 Student_phnumber。我想将这两个实体搭建成一个可以进行 CRUD 操作的单一形式,并且我想通过搭建来实现这一点。

Student_address 是一个由 Hse_name、Street_name 等组成的实体。 Student_phnumber 是另一个由 ph_number、type 等组成的实体。

我想把这两个实体搭在一起。

4

3 回答 3

6

脚手架只不过是为完整的基本资源建模而设置的生成器。除了脚手架之外,Rails 还默认提供了许多其他生成器。它们都没有设置为为一组相关模型生成资源。我怀疑这在很大程度上是因为表达这种关系的方法范围很广,这使得创建通用 UI 几乎是不可能的。此外,脚手架的设置更多是为了让您快速启动和运行,并旨在根据您的需要进行修改。对于任何重要的应用程序,这些修改通常都相当重要。那里有许多第 3 方生成器,包括流行的漂亮生成器,但据我所知,没有一个可以创建您想要生成的那种代码。如果这是您需要经常建立的关系,您可以考虑创建自己的生成器来处理任务 - 这实际上非常简单。一个很好的方法是实现你的理想案例,然后从中创建一个生成器。

编辑:

此外,您可能希望调整变量/属性名称。它们应该是小写和下划线,所以Street_name会变成street_name. 任意缩写也使编码/维护变得非常困难,因此Student_phnumber最好表示为student_phone_number. 这样做的原因,除了一致性(例如ph_numbervs Student_phnumber)之外,Rails 实际上在这些内部方法中使用了大小写和间距。

于 2012-11-07T04:53:19.913 回答
2

让我看看我是否理解你。

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

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

你想要:

a) 自动生成模型

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

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

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 会自动为您生成如下视图:

在此处输入图像描述

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

于 2012-11-10T22:10:02.367 回答
0

这是你想要的?

rails generate scaffold Student student_address:string student_phnumber:string

于 2012-10-29T04:26:06.883 回答