Skip to content

Commit f888d4c

Browse files
authored
fix: exclude-identities-when-traits-is-undefined (#96)
1 parent a86fc3e commit f888d4c

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "spec/engine-test-data"]
22
path = spec/engine-test-data
33
url = [email protected]:Flagsmith/engine-test-data.git
4-
branch = main
4+
branch = v3.5.0

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ GEM
7373
ruby-progressbar (1.13.0)
7474
semantic (1.6.1)
7575
unicode-display_width (2.5.0)
76-
uri (0.13.2)
76+
uri (1.1.1)
7777

7878
PLATFORMS
7979
ruby

lib/flagsmith/engine/segments/evaluator.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,18 @@ def traits_match_segment_condition_from_context(condition, segment_key, context)
157157
end
158158

159159
def handle_percentage_split(condition, segment_key, context)
160-
context_value_key = get_context_value(condition[:property], context) || get_identity_key_from_context(context)
161-
hashed_percentage = hashed_percentage_for_object_ids([segment_key, context_value_key])
160+
split_key = if condition[:property].nil? || condition[:property].empty?
161+
# No property specified - use identity key
162+
get_identity_key_from_context(context)
163+
else
164+
# Property specified - must exist in context
165+
get_context_value(condition[:property], context)
166+
end
167+
168+
# If split_key is nil, condition doesn't match
169+
return false if split_key.nil?
170+
171+
hashed_percentage = hashed_percentage_for_object_ids([segment_key, split_key])
162172
hashed_percentage <= condition[:value].to_f
163173
end
164174

0 commit comments

Comments
 (0)