2015-06-14 86 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的基础知识,控制器和视图如何工作。之后,这些东西对你来说将非常简单。