如何创建双重多态关联

时间:2019-05-06 05:02:10

标签: ruby-on-rails ruby activerecord

我的应用程序中有三种配置文件类型:

  • 员工
  • 客户
  • 供应商(供应商的员工)

我有许多不同的电子邮件跟踪:

  • 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 :(得分:0)

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