Rails: Nested Polymorphi c Self-Join Ассоциация? - PullRequest
0 голосов
/ 19 января 2020

Для ассоциаций полиморфных c существует две цитаты о том, как они соединяют две или более моделей.

При ассоциациях полиморфных c модель может принадлежать более чем одна другая модель , для одной ассоциации.

источник: https://guides.rubyonrails.org/v5.2/association_basics.html#polymorphic -ассоциации

Но мы не хотим Чтобы связать модель с другой произвольной моделью, мы хотим иметь любую произвольную модель, связанную с ней самой. Но мы хотим больше, чем просто reflexivity -отношение, nesting .

Начиная с примера, приведенного в Руководстве по самостоятельному объединению,

class Employee < ApplicationRecord
  has_many :subordinates, class_name: "Employee",
                          foreign_key: "manager_id"

  belongs_to :manager, class_name: "Employee"
end

есть способ создания вложенного полиморфа c self- вступить в ассоциацию ? (звучит немного дерзко, как «черепашки-ниндзя-подростки». Надевает бандану и заказывает пиццу по итальянскому псевдониму в любом случае.)

Например, дерево, которое может состоять из нескольких моделей?

Я все еще немного не уверен с ограничением :foreign_key, опцией :polymorphic и типом reference и тем, что они производят / как они работают вместе. Все они, кажется, делают примерно то же самое. Это их миграции. А именно, создание одного поля с идентификатором другого экземпляра того же класса или создание двух полей с именем_таблицы (string) и некоторым экземпляром_экземпляра (BigInt). Но насколько тонкой может быть их совместная работа, мне все еще не хватает понимания.

Если мы упакуем код в module, мы не сможем хотя бы использовать аргумент base из self.included(base) для class_name ключ с base.name уже?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...