【问题标题】:Question about controllers, dependent models, and controller functions关于控制器、依赖模型和控制器功能的问题
【发布时间】:2019-03-11 05:23:10
【问题描述】:

我是 ruby​​ on rails 的新手,我对所有在线文档感到非常困惑。我正在创建一个跟踪订单的数据库程序。我已经在模型中设置了 has_one、belongs_to 和 has_many 关联,并且可以验证它们与我的 sqlbrowswer 的关系。

这是模型的粗略说明。

Models

每个订单只有一个产品,一个服务,一个账单,每个账单可以有很多费用。相同的产品可能会出现在不同的订单中,但每个订单都是独一无二的。

我还有一个 order_observer 模型来创建产品的依赖模型

class OrderObserver < ActiveRecord::Observer observe :order def after_create(order) Product.create! :order_id => order.id Service.create! :order_id => order.id Bill.create! :order_id => order.id end end

这是我的产品类和订单类的样子:

class Product < ApplicationRecord
belongs_to :order
end


class Order < ApplicationRecord
has_one :product, dependent: :destroy
has_one :bill, dependent: :destroy
has_one :service, dependent: :destroy
accepts_nested_attributes_for :product
accepts_nested_attributes_for :bill
accepts_nested_attributes_for :service
end

现在,我很困惑的是如何更新依赖模型。我应该为每个模型实现多个控制器还是只使用一个控制器来处理整个事情?

现在我的主控制器中只有:

 def create
    @order = Order.new(order_params)   
 end
 def edit 
    @order = Order.find(params[:id])
 end
 def update
 end

如果有任何提示或指导,我将不胜感激。 谢谢!

【问题讨论】:

  • 首先,你需要定义Product和Order之间的关系,它是N:N关系。所以你需要看到这个guides.rubyonrails.org/…
  • 正如我所说,我已经设置了产品和订单之间的关系。
  • 一件产品(例如“大绿色小工具”)会出现在多个订单上吗?
  • 有点取决于您希望如何设置端点...您是否希望用户通过单个请求创建所有记录?如果是这样,您应该进行单个控制器操作。你可以认为控制器动作基本上是一个路由处理程序

标签: ruby-on-rails ruby


【解决方案1】:

现在,我很困惑的是如何更新依赖模型。我应该为每个模型实现多个控制器还是只使用一个控制器来处理整个事情?

您可以随心所欲地执行此操作,但您应该始终记住“资源”的概念,在这种情况下,每个模型都代表一个资源,因此您应该单独执行。
Rails 程序基于资源,您可以在“routes.rb”中看到。

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2011-11-18
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多