module Hashie::Extensions::Dash::PredefinedValues

Extends a Dash with the ability to accept only predefined values on a property.

Example

class PersonHash < Hashie::Dash
  include Hashie::Extensions::Dash::PredefinedValues

  property :gender, values: [:male, :female, :prefer_not_to_say]
  property :age, values: (0..150) # a Range
end

person = PersonHash.new(gender: :male, age: -1)
# => ArgumentError: The value '-1' is not accepted for property 'age'

Public Class Methods

included(base) click to toggle source
# File lib/hashie/extensions/dash/predefined_values.rb, line 18
def self.included(base)
  base.instance_variable_set(:@values_for_properties, {})
  base.extend(ClassMethods)
  base.include(InstanceMethods)
end