Rails связывает многих со многими с наследованием одной таблицы - PullRequest
1 голос
/ 25 июня 2019

Эта проблема включает в себя рельсы 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

...