【问题标题】:how to model an association with scaffold generator rails 4.2如何建模与脚手架发电机轨道 4.2 的关联
【发布时间】:2015-08-30 01:47:44
【问题描述】:

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

【问题讨论】:

  • 支架很少按原样使用。纠正它们很常见。因此,请随时准备好更正它们。
  • 我忘了说我在产品模型中设置了关联belongs_to,在客户模型中设置了'has_many'。

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


【解决方案1】:

使用

rails generate scaffold product item:string costumer:belongs_to

【讨论】:

    【解决方案2】:

    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 的基础知识,控制器和视图是如何工作的。在那之后,这些东西对你来说非常容易。

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多