【发布时间】:2019-03-11 05:23:10
【问题描述】:
我是 ruby on rails 的新手,我对所有在线文档感到非常困惑。我正在创建一个跟踪订单的数据库程序。我已经在模型中设置了 has_one、belongs_to 和 has_many 关联,并且可以验证它们与我的 sqlbrowswer 的关系。
这是模型的粗略说明。
每个订单只有一个产品,一个服务,一个账单,每个账单可以有很多费用。相同的产品可能会出现在不同的订单中,但每个订单都是独一无二的。
我还有一个 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