Rails 通过与 has_many 和 belongs_to 的关系

Rails through relation with has_many and belongs_to

我需要定义 Packages 和 Delivers 之间的关系: 1 个送货罐有很多包裹。 但是包裹不能有交付。包裹只能属于 Delivers。

投递 has_many 包裹,但包裹只能 belongs_to 投递(或分派,我不知道)。

我应该有作业 table,存储 deliver_id 和 package_id。当我分配要交付的包裹时 - 它应该创建新的分配记录

看来,我需要使用:

through: :package_assignments  

但是我不明白packages, deliveries, 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

结果,我意识到 many_to_many Package 和 Deliver through Assignment 之间的关系。它允许分配,例如,要交付的包裹,它会自动创建带有 package_id 和 deliver_id 的分配记录。

交付模型:

class Deliver < ApplicationRecord
  has_many :assignments, dependent: :destroy
  has_many :packages, through: :assignments
end

封装型号:

class Package < ApplicationRecord
  has_many :assignments, dependent: :destroy
  has_many :delivers, through: :assignments
end

分配模型:

class Assignment < ApplicationRecord
  belongs_to :deliver
  belongs_to :package
end