From ff98acbc961b1da1068c61262a98df112691ec78 Mon Sep 17 00:00:00 2001 From: Maciej Litwiniuk Date: Thu, 29 Jul 2010 03:11:39 +0800 Subject: [PATCH] state inclusion validator added (now there is no possibility to arbitrary set state to value different, than state list --- lib/active_record/transitions.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/active_record/transitions.rb b/lib/active_record/transitions.rb index bc28262..766c5b1 100644 --- a/lib/active_record/transitions.rb +++ b/lib/active_record/transitions.rb @@ -28,6 +28,7 @@ module Transitions include ::Transitions before_validation :set_initial_state validates_presence_of :state + validate :state_inclusion end protected @@ -43,5 +44,12 @@ def read_state(state_machine) def set_initial_state self.state ||= self.class.state_machine.initial_state.to_s end + + def state_inclusion + unless self.class.state_machine.states.map{|s| s.name.to_s }.include?(self.state.to_s) + self.errors.add(:state, :inclusion, :value => self.state) + end + end end end +