value_to_boolean(value), does not always return a boolean value, only when true.
150: def value_to_boolean(value) 151: if value.is_a?(String) && value.blank? 152: nil 153: else 154: TRUE_VALUES.include?(value) 155: end 156: end
If value is contained in TRUE_VALUES then it returns true(TrueClass). But if value is anything else it returns nil(NilClass) instead of false(FalseClass)
This does not seem consistent or expected to me since false <> nil.
Since we have TRUE_VALUES and FALSE_VALUES, I think it should be something like this.
150 def value_to_boolean(value) 151 if TRUE_VALUES.include?(value) 152 true 153 elsif FALSE_VALUES.include?(value) 154 false 155 else 156 nil 157 end 158 end