2015-06-14 41 views
1

基本例如: 1)創建與下面的指令一個新的Rails項目:如何與腳手架發電機關聯模型軌4.2

rails new tut3 

2)我產生我的第一臺架模型負荷消費

rails generate scaffold costumer name:string 

3)I生成我的第二支架模型產品

rails generate scaffold product item:string costumer_id:integer 

4)我跑遷移(rake db:migrate)以及啓動服務器(rails s) 並添加一些使用者(例如,馬里奧,安娜等)。我進入產品頁面,我期望通過下拉表格獲得一個消費者領域,其中顯示了我添加的客戶的ID,但我發現我可以插入任何我希望的ID號碼。爲什麼這樣?模型產品的消費者領域是否應該僅限於我在消費者頁面中創建的消費者ID?以及我如何才能將產品消費者領域與我創建的客戶名稱聯繫起來? 希望我的問題很明確...))

+0

支架很少按原樣使用。糾正它們很常見。所以,隨時準備糾正它們。 –

+0

我忘記提及,我在產品模型中設置關聯belongs_to,在costumer模型中設置'has_many'。 –

回答

0

rails generate scaffold爲你做了很多工作,但它不能爲你做每一件事。

你將不得不爲自己手動設置其他東西。從路線開始,您必須設置它們,以便您可以使用類似customers/1/productscustomers/2/products的東西。 scaffold不會爲您設置這些路線。

resources :customers do 
    resources :products 
end 

當你提到customer_id而產生scaffold的產品,這意味着產品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的基礎知識,控制器和視圖如何工作。之後,這些東西對你來說將非常簡單。

相關問題