【发布时间】:2020-05-16 07:42:03
【问题描述】:
我需要定义 Packages 和 Delivers 之间的关系: 1 交付罐有许多包裹。 但是包裹不能有送货。包裹只能属于 Delivers。
交付 has_many 包,但包只能属于_to 交付(或分配给分配,我不知道)。
我应该有Assignment 表,存储deliver_id 和package_id。当我分配要交付的包裹时 - 它应该创建新的分配记录
看来,我需要使用:
through: :package_assignments
但我不明白包裹、交付和分配之间的关系。
现在我定义 package.rb:
class Package < ApplicationRecord
belongs_to :assignments
deliver.rb:
class Deliver < ApplicationRecord
has_many :assignments
has_many :packages, through: :assignments
assignment.rb:
class Assignment < ApplicationRecord
belongs_to :deliver
has_many :packages
【问题讨论】:
-
你的要求是矛盾的:“1个交付可以得到很多包”:一个交付
has_many包。 “而 1 个包裹只能分配给 1 个交付”:一个交付has_one包裹? -
你真的应该重命名模型
Delivery这是一个名词。模型应该是名词,因为它们代表业务模型中的事物。Deliver是动词。 -
我的意思是 1 个交付罐有很多包裹。但是包裹不能有送货。我的意思是这不是关于包裹有很多交付。
-
我重命名为名词。谢谢
-
包裹不能有 Delivers 是什么意思?交付中的简单
has_many和包装中的belongs_to还不够吗?您不必为此创建中介Assignment表。
标签: ruby-on-rails activerecord has-many relation belongs-to