如何建立与脚手架发电机导轨4.2的关联

时间:2015-06-14 14:10:31

标签: ruby-on-rails ruby-on-rails-4

基本示例: 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,但我看到我可以插入我想要的任何身份证号码。为什么这样?模型产品的costumer字段是否仅限于我在客户页面中创建的客户ID?如何将产品客户字段与我创建的客户名称相关联? 希望我的问题很明确......))

2 个答案:

答案 0 :(得分: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的基础知识,控制器和视图的工作原理。在那之后,这些东西对你来说非常容易。

答案 1 :(得分:0)

使用

rails generate scaffold product item:string costumer:belongs_to