diff --git a/README.md b/README.md index 884bbfe..e7e1754 100644 --- a/README.md +++ b/README.md @@ -109,8 +109,10 @@ enum = Kredis.enum "myenum", values: %w[ one two three ], default: "one" true == enum.one? # => GET myenum enum.value = "two" # => SET myenum "two" "two" == enum.value # => GET myenum +enum.three! # => SET myenum "three" +"three" == enum.value # => GET myenum enum.value = "four" -"two" == enum.value # => GET myenum +"three" == enum.value # => GET myenum enum.reset # => DEL myenum "one" == enum.value # => GET myenum diff --git a/lib/kredis/types/enum.rb b/lib/kredis/types/enum.rb index 2d30270..b14403f 100644 --- a/lib/kredis/types/enum.rb +++ b/lib/kredis/types/enum.rb @@ -28,6 +28,7 @@ def reset def define_predicates_for_values values.each do |defined_value| define_singleton_method("#{defined_value}?") { value == defined_value } + define_singleton_method("#{defined_value}!") { self.value = defined_value } end end end diff --git a/test/types/enum_test.rb b/test/types/enum_test.rb index a1648e4..84c587b 100644 --- a/test/types/enum_test.rb +++ b/test/types/enum_test.rb @@ -14,6 +14,11 @@ class EnumTest < ActiveSupport::TestCase assert @enum.two? assert_not @enum.three? + + @enum.three! + assert @enum.three? + + assert_not @enum.two? end test "validated value" do