Как я могу создать двойную полиморфную ассоциацию - PullRequest
0 голосов
/ 06 мая 2019

В моем приложении три типа профиля:

  • Сотрудник
  • Клиент
  • Suppliee (работник поставщика)

И у меня есть много разных отслеживаний электронной почты:

  • EmailOpen
  • EmailBounce
  • EmailClick
  • и т.д.

Существует таблица для каждого из них, и я хотел бы создать двойную полиморфную ассоциацию, например, чтобы профиль мог иметь много разных email_activities, а email_activity принадлежит профилю.

Первоначально, было только одно отслеживание электронной почты, и поэтому полиморфная ассоциация выглядела так:

# employee.rb, customer.rb, suppliee.rb

has_many :email_activities, as: :profile
# email_activity.rb
belongs_to :profile, polymorphic: true, optional: true

Теперь, однако, я хотел бы, чтобы многие профили обращались к каждому профилю с помощью email_activities через полиморфную ассоциацию.

Код, который у меня есть на данный момент, выглядит так:

# employee.rb, customer.rb, suppliee.rb

has_many :email_activities, polymorphic: true, as: :profile, dependent: :destroy
# email_open.rb, email_bounce.rb, email_click.rb, etc.

belongs_to :profile, polymorphic: true, as: :email_activity, optional: true

Всякий раз, когда я пытаюсь получить доступ к email_activities для профиля, я получаю эту ошибку:

Unknown key: :polymorphic

Я полагаю, что синтаксис, который я использую, не совсем работает в этом случае. Как мне заставить его работать?

1 Ответ

0 голосов
/ 06 мая 2019

has_many не имеет ключа :polymorphic, поэтому попробуйте это:

# employee.rb, customer.rb, suppliee.rb
has_many :email_activities, as: :profile, dependent: :destroy


# email_open.rb, email_bounce.rb, email_click.rb, etc.
belongs_to :profile, polymorphic: true, as: :email_activity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...