我的应用程序中有一个示例,我可以分配/访问多态关联,但是我无法从多态关联中访问该类,
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
。
class_name
选项传递给多态has_one
has_one :email_campaign_subscription, class_name: 'EmailCampaignSubscription',
as: :subscribable
尝试一下。