Class: TransitionValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- TransitionValidator
- Defined in:
- lib/transition_validator.rb,
lib/transition_validator/version.rb
Constant Summary collapse
- VERSION =
"1.0.2"
Instance Method Summary collapse
- #transition!(record, attribute, from, to) ⇒ Object
- #transition?(record, attribute, from, to) ⇒ Boolean
- #validate_each(record, attribute, value) ⇒ Object
Instance Method Details
#transition!(record, attribute, from, to) ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/transition_validator.rb', line 21 def transition! record, attribute, from, to method = "#{from}_to_#{to}_#{attribute}_transition".to_sym if record.methods.include?(method) && from != to record.send(method) else true end end |
#transition?(record, attribute, from, to) ⇒ Boolean
16 17 18 19 |
# File 'lib/transition_validator.rb', line 16 def transition? record, attribute, from, to transitions = record.method("#{attribute}_transitions").call (from == to || (transitions.key?(from) && transitions[from].include?(to))) ? true : false end |
#validate_each(record, attribute, value) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/transition_validator.rb', line 4 def validate_each(record, attribute, value) from ||= record.changes[attribute].to_a.first to ||= record.changes[attribute].to_a.last if transition?(record, attribute, from, to) if !transition!(record, attribute, from, to) record.errors[attribute] << I18n.t('errors.messages.transition') end else record.errors[attribute] << I18n.t('errors.messages.transition') end end |