多态关联的相反方向 rails

Opposite direction of polymorphic association rails

我的应用程序中有一个示例,我可以在其中 assign/access 多态关联,但我是否无法从多态关联访问 class,

class EmailCampaignSubscription < ActiveRecord::Base
  belongs_to :subscribable, polymorphic: true
end

class Order < ActiveRecord::Base
  has_one :email_campaign_subscription, as: :subscribable
end

这行得通 EmailCampaignSubscription.last.subscribable,但行不通 Order.last. email_campaign_subscription。这也不起作用:

EmailCampaignSubscription.last.subscribable.email_campaign_subscription

通过不起作用 我是认真的 returns nil.

有效(returns 正确记录):

EmailCampaignSubscription.where(subscribable_type: "Order", subscribable_id: Order.last.id)

我正在使用 rails 4.2.11,为什么这个返回 email_campaign_subscription 的访问器不起作用,我如何修复关联定义以使其起作用?

更新:

我试过了:

has_one :email_campaign_subscription, class_name: 'EmailCampaignSubscription', as: :subscribable

还有 nil.

您需要通过 class_name 多态选项 has_one

has_one :email_campaign_subscription, class_name: 'EmailCampaignSubscription', 
                                      as: :subscribable

试一试。