Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails 4中正确实现三向多对多关系?_Ruby On Rails_Forms_Many To Many - Fatal编程技术网

Ruby on rails 如何在rails 4中正确实现三向多对多关系?

Ruby on rails 如何在rails 4中正确实现三向多对多关系?,ruby-on-rails,forms,many-to-many,Ruby On Rails,Forms,Many To Many,我使用的是rails 4,我有一个可能的三方多对多关系情况,看起来是这样的:要注册销售,我需要一个客户和一个产品,以及它的数量。当我因为另一个表分期付款而需要一个固定的销售id时,会出现三种情况,每个分期付款都有到期日期和价值,并检查是否已付款 我对它们之间的关系有点困惑,但我做了类似的事情(我在这里称中间表为SCP,sale\u client\u product): class客户端

我使用的是rails 4,我有一个可能的三方多对多关系情况,看起来是这样的:要注册销售,我需要一个客户和一个产品,以及它的数量。当我因为另一个表分期付款而需要一个固定的销售id时,会出现三种情况,每个分期付款都有到期日期和价值,并检查是否已付款

我对它们之间的关系有点困惑,但我做了类似的事情(我在这里称中间表为SCP,sale\u client\u product):

class客户端

我想知道这是正确的还是有更好的方法。在实际保存时,我也处于困境中,因为对于任何一次销售,我可能必须用一个表单保存多个SCP实例。

如果您想在单个文档中保存
产品
客户
销售
分期付款
信息,也许您可以使用
发票

在商业中,如果公司想向客户要钱,他会定期向客户发送一封电子邮件,其中包括以下所有信息:

  • 每件产品的详细信息、名称、数量、价格
  • 客户详细信息、姓名、地址、电话号码
  • 销售明细、总价、销售日期或分期付款到期日、分期付款金额


付款
将是您需要与
发票
进行对账的内容,以便您能够了解哪些
发票
(以及因此而支付的
分期付款

Class Payment
  belongs_to :invoice
end
当您执行
@invoice.payment
时,您将获得该发票的付款(
属于:分期付款
),如果
@invoice.payment
,则分期付款未支付

如果您想注册
付款
它应该有一张现有的
发票

@payment = Payment.new(payment_params)
@payment.invoice_id = @invoice.id
@payment.save
这就是我在会计领域工作时注册会计事务的方式。请随意改进你的应用程序,也许将来我们可以编辑这篇文章进行改进


一个可能的改进可能是保护它,所以你要弄明白

谢谢你的帮助。我仍然需要更好地理解多态关联,因为我不知道它到底是如何工作的,我会在它开始工作后再给你回复,这样我就明白了,你把这个发票当作一个包,包括特定销售的所有产品和客户?我很难理解您的示例的实现,因为我不知道什么是代码方面的。@onildo您是对的。我的解决方案不完整,所以我完全重写了它。请看一看。谢谢
Class Payment
  belongs_to :invoice
end
@payment = Payment.new(payment_params)
@payment.invoice_id = @invoice.id
@payment.save