多态关联的相反方向 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
试一试。
我的应用程序中有一个示例,我可以在其中 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
试一试。