[英]how to model an association with scaffold generator rails 4.2
基本示例:1)我使用以下說明創建了一個新的 rails 項目:
rails new tut3
2)我生成了我的第一個腳手架模型客戶
rails generate scaffold costumer name:string
3)我生成了我的第二個腳手架模型產品
rails generate scaffold product item:string costumer_id:integer
4)我運行遷移(rake db:migrate)並在啟動服務器(rails s)並添加一些客戶(例如馬里奧,安娜等)之后我轉到產品頁面,我希望得到一個客戶字段顯示我添加的客戶 ID 的下拉表,但我發現我可以插入任何我希望的 ID 號。 為什么這樣? 模型產品的客戶字段是否應該僅限於我在客戶頁面中創建的客戶 ID? 以及如何將產品客戶字段與我創建的客戶名稱相關聯? 希望我的問題很清楚...))
rails generate scaffold
為你做了很多工作,但它不能為你做每件事。
您將不得不為自己手動設置其他內容。 從路由開始,您必須設置它們,以便您可以使用諸如customers/1/products
或customers/2/products
。 scaffold
不會為您設置這些路線。
resources :customers do
resources :products
end
當您在為產品生成scaffold
時提到customer_id
時,這意味着產品belongs_to
客戶,您可以在app/models/product.rb
的代碼中查看它。 但現在的問題是,從客戶到產品的關系如何。 一個客戶可以擁有多種產品,還是一個客戶只能擁有一種產品?
在app/models/customer.rb
,
class Customer < ActiveRecord::Base
has_one :product # For having only product per customer
# has_many: products # Note that 's' at the end, this makes a customer have as many as products as possible.
end
同樣,您需要更改兩個字段的視圖和控制器,這是一個完整的過程。 為此,我建議您閱讀 Rails 的基礎知識,了解控制器和視圖是如何工作的。 之后,這些東西對你來說就很容易了。
用
rails generate scaffold product item:string costumer:belongs_to
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.