Updating a Policy from version 1 to version 3 by adding a condition:
require"google/cloud/storage"storage=Google::Cloud::Storage.newbucket=storage.bucket"my-bucket"bucket.uniform_bucket_level_access=truebucket.policyrequested_policy_version:3do|p|p.version# the value is 1p.version=3# Must be explicitly set to opt-in to support for conditions.expr="resource.name.startsWith(\"projects/_/buckets/bucket-name/objects/prefix-a-\")"p.bindings.insert({role:"roles/storage.admin",members:["user:owner@example.com"],condition:{title:"my-condition",description:"description of condition",expression:expr}})end
Methods
#description
defdescription()->String
Used to document the condition. Optional.
Returns
(String) — the current value of description
#description=
defdescription=(new_description)
The description to document the condition. Optional.
#expression
defexpression()->String
Defines an attribute-based logic
expression using a subset of the Common Expression Language (CEL).
The condition expression can contain multiple statements, each uses
one attributes, and statements are combined using logic operators,
following CEL language specification. Required.
Returns
(String) — the current value of expression
#expression=
defexpression=(new_expression)
An attribute-based logic expression using a subset of the Common
Expression Language (CEL). The condition expression can contain
multiple statements, each uses one attributes, and statements are
combined using logic operators, following CEL language
specification. Required.
title (String) — Used to identify the condition. Required.
description (String) (defaults to: nil) — Used to document the condition. Optional.
expression (String) — Defines an attribute-based logic
expression using a subset of the Common Expression Language (CEL).
The condition expression can contain multiple statements, each uses
one attributes, and statements are combined using logic operators,
following CEL language specification. Required.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Cloud Storage API - Class Google::Cloud::Storage::Policy::Condition (v1.57.0)\n\nVersion latestkeyboard_arrow_down\n\n- [1.57.0 (latest)](/ruby/docs/reference/google-cloud-storage/latest/Google-Cloud-Storage-Policy-Condition)\n- [1.56.0](/ruby/docs/reference/google-cloud-storage/1.56.0/Google-Cloud-Storage-Policy-Condition)\n- [1.55.0](/ruby/docs/reference/google-cloud-storage/1.55.0/Google-Cloud-Storage-Policy-Condition)\n- [1.54.0](/ruby/docs/reference/google-cloud-storage/1.54.0/Google-Cloud-Storage-Policy-Condition)\n- [1.53.0](/ruby/docs/reference/google-cloud-storage/1.53.0/Google-Cloud-Storage-Policy-Condition)\n- [1.52.0](/ruby/docs/reference/google-cloud-storage/1.52.0/Google-Cloud-Storage-Policy-Condition)\n- [1.51.0](/ruby/docs/reference/google-cloud-storage/1.51.0/Google-Cloud-Storage-Policy-Condition)\n- [1.50.0](/ruby/docs/reference/google-cloud-storage/1.50.0/Google-Cloud-Storage-Policy-Condition)\n- [1.49.0](/ruby/docs/reference/google-cloud-storage/1.49.0/Google-Cloud-Storage-Policy-Condition)\n- [1.48.1](/ruby/docs/reference/google-cloud-storage/1.48.1/Google-Cloud-Storage-Policy-Condition)\n- [1.47.0](/ruby/docs/reference/google-cloud-storage/1.47.0/Google-Cloud-Storage-Policy-Condition)\n- [1.46.0](/ruby/docs/reference/google-cloud-storage/1.46.0/Google-Cloud-Storage-Policy-Condition)\n- [1.45.0](/ruby/docs/reference/google-cloud-storage/1.45.0/Google-Cloud-Storage-Policy-Condition)\n- [1.44.0](/ruby/docs/reference/google-cloud-storage/1.44.0/Google-Cloud-Storage-Policy-Condition)\n- [1.43.0](/ruby/docs/reference/google-cloud-storage/1.43.0/Google-Cloud-Storage-Policy-Condition)\n- [1.42.0](/ruby/docs/reference/google-cloud-storage/1.42.0/Google-Cloud-Storage-Policy-Condition)\n- [1.41.0](/ruby/docs/reference/google-cloud-storage/1.41.0/Google-Cloud-Storage-Policy-Condition)\n- [1.40.0](/ruby/docs/reference/google-cloud-storage/1.40.0/Google-Cloud-Storage-Policy-Condition)\n- [1.39.0](/ruby/docs/reference/google-cloud-storage/1.39.0/Google-Cloud-Storage-Policy-Condition)\n- [1.38.0](/ruby/docs/reference/google-cloud-storage/1.38.0/Google-Cloud-Storage-Policy-Condition)\n- [1.37.0](/ruby/docs/reference/google-cloud-storage/1.37.0/Google-Cloud-Storage-Policy-Condition)\n- [1.36.2](/ruby/docs/reference/google-cloud-storage/1.36.2/Google-Cloud-Storage-Policy-Condition)\n- [1.35.0](/ruby/docs/reference/google-cloud-storage/1.35.0/Google-Cloud-Storage-Policy-Condition) \nReference documentation and code samples for the Cloud Storage API class Google::Cloud::Storage::Policy::Condition.\n\nCondition\n---------\n\nValue object accepting an attribute-based logic expression based on a\nsubset of the Common Expression Language (CEL). \n\nInherits\n--------\n\n- Object\n\nExamples\n--------\n\n```ruby\nrequire \"google/cloud/storage\"\n\nstorage = Google::Cloud::Storage.new\nbucket = storage.bucket \"my-bucket\"\n\npolicy = bucket.policy requested_policy_version: 3\npolicy.bindings.each do |binding|\n puts binding.condition.title if binding.condition\nend\n```\n\nUpdating a Policy from version 1 to version 3 by adding a condition: \n\n```ruby\nrequire \"google/cloud/storage\"\n\nstorage = Google::Cloud::Storage.new\nbucket = storage.bucket \"my-bucket\"\n\nbucket.uniform_bucket_level_access = true\n\nbucket.policy requested_policy_version: 3 do |p|\n p.version # the value is 1\n p.version = 3 # Must be explicitly set to opt-in to support for conditions.\n\n expr = \"resource.name.startsWith(\\\"projects/_/buckets/bucket-name/objects/prefix-a-\\\")\"\n p.bindings.insert({\n role: \"roles/storage.admin\",\n members: [\"user:owner@example.com\"],\n condition: {\n title: \"my-condition\",\n description: \"description of condition\",\n expression: expr\n }\n })\nend\n```\n\nMethods\n-------\n\n### #description\n\n def description() -\u003e String\n\nUsed to document the condition. Optional. \n**Returns**\n\n- (String) --- the current value of description\n\n### #description=\n\n def description=(new_description)\n\nThe description to document the condition. Optional.\n\n### #expression\n\n def expression() -\u003e String\n\nDefines an attribute-based logic\nexpression using a subset of the Common Expression Language (CEL).\nThe condition expression can contain multiple statements, each uses\none attributes, and statements are combined using logic operators,\nfollowing CEL language specification. Required. \n**Returns**\n\n- (String) --- the current value of expression\n\n### #expression=\n\n def expression=(new_expression)\n\nAn attribute-based logic expression using a subset of the Common\nExpression Language (CEL). The condition expression can contain\nmultiple statements, each uses one attributes, and statements are\ncombined using logic operators, following CEL language\nspecification. Required.\n\n### #initialize\n\n def initialize(title:, expression:, description: nil) -\u003e Condition\n\nCreates a Condition object. \n**Parameters**\n\n- **title** (String) --- Used to identify the condition. Required.\n- **description** (String) *(defaults to: nil)* --- Used to document the condition. Optional.\n- **expression** (String) --- Defines an attribute-based logic expression using a subset of the Common Expression Language (CEL). The condition expression can contain multiple statements, each uses one attributes, and statements are combined using logic operators, following CEL language specification. Required. \n**Returns**\n\n- ([Condition](./Google-Cloud-Storage-Policy-Condition)) --- a new instance of Condition\n\n### #title\n\n def title() -\u003e String\n\nUsed to identify the condition. Required. \n**Returns**\n\n- (String) --- the current value of title\n\n### #title=\n\n def title=(new_title)\n\nThe title used to identify the condition. Required.\n\n### #to_gapi\n\n def to_gapi()"]]