首页 > 解决方案 > 如何创建双多态关联

问题描述

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

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

他们每个人都有一个表,我想建立一个双重多态关联,例如一个配置文件可以有许多不同的 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

我想我使用的语法在这种情况下不太适用。我怎样才能让它工作?

标签: ruby-on-railsrubyactiverecord

解决方案


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

推荐阅读