protocolbuffers/protobuf

Cannot assign an array to a repeated field in Ruby

Open

#7,161 opened on 2020年1月31日

GitHub で見る
 (1 comment) (5 reactions) (0 assignees)C++ (16,128 forks)batch import
help wantedruby

Repository metrics

Stars
 (71,223 stars)
PR merge metrics
 (平均マージ 2d 11h) (30d で 185 merged PRs)

説明

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.

コントリビューターガイド