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