diff --git a/assets/javascripts/discourse/lib/wizard-mapper.js.es6 b/assets/javascripts/discourse/lib/wizard-mapper.js.es6 index ceafa5f1..2d7e9e87 100644 --- a/assets/javascripts/discourse/lib/wizard-mapper.js.es6 +++ b/assets/javascripts/discourse/lib/wizard-mapper.js.es6 @@ -31,7 +31,8 @@ const connectors = { 'less', 'greater_or_equal', 'less_or_equal', - 'regex' + 'regex', + 'boolean' ], output: [ 'then', diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 49e7bb55..ca6b2e05 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -176,6 +176,7 @@ en: less_or_equal: '<=' regex: '=~' association: '→' + boolean: 'is' action: header: "Actions" diff --git a/lib/custom_wizard/mapper.rb b/lib/custom_wizard/mapper.rb index 978198a3..e8f943e5 100644 --- a/lib/custom_wizard/mapper.rb +++ b/lib/custom_wizard/mapper.rb @@ -14,7 +14,8 @@ class CustomWizard::Mapper less: '<', greater_or_equal: '>=', less_or_equal: '<=', - regex: '=~' + regex: '=~', + boolean: '==' } def initialize(params) @@ -85,14 +86,12 @@ class CustomWizard::Mapper def validate_pairs(pairs) pairs.all? do |pair| - key = map_field(pair['key'], pair['key_type']) connector = pair['connector'] operator = map_operator(connector) - value = cast_value( - key, - map_field(pair['value'], pair['value_type']), - connector - ) + key = map_field(pair['key'], pair['key_type']) + value = cast_value(map_field(pair['value'], pair['value_type']), key, connector) + + byebug begin cast_result(key.public_send(operator, value), connector) @@ -102,9 +101,11 @@ class CustomWizard::Mapper end end - def cast_value(key, value, connector) + def cast_value(value, key, connector) if connector == 'regex' Regexp.new(value) + elsif connector == 'boolean' + ActiveRecord::Type::Boolean.new.cast(value) else if key.is_a?(String) value.to_s