基本示例: 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?如何将产品客户字段与我创建的客户名称相关联? 希望我的问题很明确......))
答案 0 :(得分:0)
rails generate scaffold
为你做了很多工作,但它不能为你做每件事。
您必须自己手动设置其他内容。从路线开始,您必须对其进行设置,以便您可以使用customers/1/products
或customers/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