protocolbuffers/protobuf

Cannot assign an array to a repeated field in Ruby

Open

#7,161 建立於 2020年1月31日

在 GitHub 查看
 (1 留言) (5 反應) (0 負責人)C++ (16,128 fork)batch import
help wantedruby

倉庫指標

Star
 (71,223 star)
PR 合併指標
 (平均合併 2天 11小時) (30 天內合併 185 個 PR)

描述

What language does this apply to? Ruby

Describe the problem you are trying to solve. Consider trying to do this:

#!/usr/bin/ruby
require 'google/protobuf'

Google::Protobuf::DescriptorPool.generated_pool.build do
  add_file("google/ads/googleads/v2/services/campaign_budget_service.proto", :syntax => :proto3) do
    add_message "google.ads.googleads.v2.services.MutateCampaignBudgetsRequest" do
      optional :customer_id, :string, 1
      repeated :operations, :message, 2, "google.ads.googleads.v2.services.CampaignBudgetOperation"
    end

    add_message "google.ads.googleads.v2.services.CampaignBudgetOperation" do
      oneof :operation do
        optional :remove, :string, 1
      end
    end
  end
end

module Google
  module Ads
    module GoogleAds
      module V2
        module Services
          MutateCampaignBudgetsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v2.services.MutateCampaignBudgetsRequest").msgclass
          CampaignBudgetOperation = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v2.services.CampaignBudgetOperation").msgclass
        end
      end
    end
  end
end

include Google::Ads::GoogleAds::V2::Services

def main
  r = MutateCampaignBudgetsRequest.new
  r.operations = [CampaignBudgetOperation.new]
end

if __FILE__ == $0
  main
end

currently protobuf gives this error:

Traceback (most recent call last):
	2: from hi.rb:40:in `<main>'
	1: from hi.rb:36:in `main'
hi.rb:36:in `method_missing': Expected repeated field array (Google::Protobuf::TypeError)

Describe the solution you'd like Assigning an array to a repeated field should work if all the values are of the right type

Describe alternatives you've considered N/A Additional context my ldap pnlpn@ for on-corp discussions.

貢獻者指南