Method: Module#attr_validator
- Defined in:
- lib/core/facets/module/attr_validator.rb
#attr_validator(*symbols, &validator) ⇒ Object
Like attr_writer, but the writer method validates the setting against the given block.
NOTE: This method is not a common core extension and is not loaded automatically when using require 'facets'.
CREDIT: ?
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/core/facets/module/attr_validator.rb', line 14 def attr_validator(*symbols, &validator) made = [] symbols.each do |symbol| define_method "#{symbol}=" do |val| unless validator.call(val) raise ArgumentError, "Invalid value provided for #{symbol}" end instance_variable_set("@#{symbol}", val) end made << "#{symbol}=".to_sym end made end |