簡體   English   中英

如何建模與腳手架生成器導軌的關聯 4.2

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM