Module: ActionFigure::Core::CrossParamRuleHelpers
- Defined in:
- lib/action_figure/core.rb
Overview
Extended into dry-validation contract classes to provide cross-param rule helpers.
Instance Method Summary collapse
- #all_rule(*fields, message) ⇒ Object
- #any_rule(*fields, message) ⇒ Object
- #exclusive_rule(*fields, message) ⇒ Object
- #one_rule(*fields, message) ⇒ Object
Instance Method Details
#all_rule(*fields, message) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/action_figure/core.rb', line 31 def all_rule(*fields, ) rule(*fields) do present = fields.select { |f| values.key?(f) && !values[f].nil? } fields.each { |f| key(f).failure() } unless present.empty? || present.size == fields.size end end |
#any_rule(*fields, message) ⇒ Object
17 18 19 20 21 22 |
# File 'lib/action_figure/core.rb', line 17 def any_rule(*fields, ) rule(*fields) do present = fields.select { |f| values.key?(f) && !values[f].nil? } fields.each { |f| key(f).failure() } if present.empty? end end |
#exclusive_rule(*fields, message) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/action_figure/core.rb', line 10 def exclusive_rule(*fields, ) rule(*fields) do present = fields.select { |f| values.key?(f) && !values[f].nil? } present.each { |f| key(f).failure() } if present.size > 1 end end |
#one_rule(*fields, message) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/action_figure/core.rb', line 24 def one_rule(*fields, ) rule(*fields) do present = fields.select { |f| values.key?(f) && !values[f].nil? } fields.each { |f| key(f).failure() } unless present.size == 1 end end |