Эта проблема включает в себя рельсы ActiveRecord «многие-ко-многим» и случай наследования одной таблицы. Я изо всех сил пытаюсь заставить ассоциацию Patient
-> Membership
работать. Все остальные ассоциации работают как положено.
Обратите внимание, что Member
(ниже) содержит поля внешнего ключа для membership_id
и patient_id
.
До сих пор я экспериментировал с различными комбинациями опций для ассоциаций, но не смог найти правильную настройку, чтобы заставить ассоциацию работать
class LineItem < ApplicationRecord
end
class Membership < LineItem
has_many :members, dependent: :destroy, foreign_key: :line_item_id, inverse_of: :membership
has_many :patients, through: :members
end
class Member < ApplicationRecord
belongs_to :membership, foreign_key: :line_item_id, inverse_of: :members
belongs_to :patient, optional: true
end
class Patient < ApplicationRecord
has_many :members
has_many :memberships, through: :members
end
Пусть patient_1
будет экземпляром Patient
.
Пусть membership_1
будет экземпляром Membership
.
Пусть они будут связаны через member_1
, экземпляр Member
.
Я бы ожидал, что patient_1.memberships
вернет membership_1
(содержится в ActiveRecord Relation).
Вместо этого я получаю следующую ошибку:
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column line_items.member_id does not exist