ruby-on-rails 如何对与脚手架生成器导轨的关联进行建模4.2

nzrxty8p  于 2023-03-09  发布在  Ruby
关注(0)|答案(2)|浏览(166)

基本示例:
1.我创建了一个新的rails项目,使用以下指令:

rails new tut3

1.我产生了第一个脚手架模型客户

rails generate scaffold customer name:string

1.生成第二个支架模型产品

rails generate scaffold product item:string customer_id:integer

1.我运行了迁移(rake db:migrate),在启动服务器(rails s)并添加了一些客户(例如Mario、安娜等)之后,我进入产品页面,我希望得到一个客户列,其中包含一个下拉表,显示我添加的客户的ID,但我发现我可以插入任何我想要的ID号。为什么会这样?模型产品的客户列应该仅限于我在客户页面中创建的客户ID吗?我如何将产品客户列与我创建的客户名称相关联?
希望我的问题是清楚的...))

ldioqlga

ldioqlga1#

用途

rails generate scaffold product item:string customer:belongs_to
xqnpmsa8

xqnpmsa82#

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的基础知识,控制器和视图是如何工作的。在那之后,事情对你来说就很容易了。

相关问题