簡體   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