首页 > 解决方案 > 如何在 Rails 中使用 Grape 包含关系

问题描述

在我的葡萄应用程序中,我想更改每个广告系列的已使用campaign_codes和全部返回(作为响应)数量。campaign_codes为此,我还需要返回关系对象。这是我的序列化程序:

module V1
  module AdminPanel
    module Serializers
      class CampaignSerializer
        include FastJsonapi::ObjectSerializer

        attributes :total_campaign_codes_amount, :used_campaign_codes_amount

        attribute :total_campaign_codes_amount do |campaign|
          campaign.campaign_codes.count
        end

        attribute :used_campaign_codes_amount do |campaign|
          campaign.campaign_codes.where(state: 'used').count
        end
      end
    end
  end
end

但是使用此代码,我收到一个错误:

ArgumentError(campaign_codes 未指定为 V1::AdminPanel::Serializers::CampaignSerializer 上的关系)

如果我添加has_many :campaign_codes它会起作用,但另外我会返回所有campaign_codes我不想要的东西。

有没有机会在没有得到所有代码的响应的情况下到达include某个地方?campaign_codes

标签: ruby-on-railsrubygrape

解决方案


推荐阅读