I need to define relation between Packages and Delivers: 1 deliver can has many packages. But packages can not have delivers. Packages can just belong to Delivers.
Deliver has_many packages, but package can just belongs_to delivers (or to assigments, I do not know).
I should have Assignment table, that store deliver_id and package_id. And when I assign package to deliver - it should create new assignment record
It seems, that I need to use:
through: :package_assignments
But I do not understand the relation between packages, delivers and assignments.
For now I define 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
In result, I realized many_to_many relation betweeen Package and Deliver through Assignment. It allows to assign, for example, Package to Deliver and it automatically creates Assignment record with package_id and deliver_id.
Deliver model:
class Deliver < ApplicationRecord
has_many :assignments, dependent: :destroy
has_many :packages, through: :assignments
end
Package model:
class Package < ApplicationRecord
has_many :assignments, dependent: :destroy
has_many :delivers, through: :assignments
end
Assignment model:
class Assignment < ApplicationRecord
belongs_to :deliver
belongs_to :package
end