多态关联轨的相反方向

问题描述 投票:2回答:1

我的应用程序中有一个示例,我可以分配/访问多态关联,但是我无法从多态关联中访问该类,

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

按不起作用,我是说它返回nil

此方法有效(返回正确的记录):

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

ruby-on-rails ruby-on-rails-4 activerecord ruby-on-rails-4.2
1个回答
0
投票
您需要将class_name选项传递给多态has_one

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

尝试一下。
© www.soinside.com 2019 - 2024. All rights reserved.