| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  | class Validators::Base | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-27 18:45:35 +03:00
										 |  |  |   def initialize(model, options={}) | 
					
						
							| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  |     @model = model | 
					
						
							| 
									
										
										
										
											2014-11-27 18:45:35 +03:00
										 |  |  |     @options = options | 
					
						
							| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def validate! | 
					
						
							|  |  |  |     raise InvalidRecord.new(message) unless valid? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def valid? | 
					
						
							|  |  |  |     raise 'override me' | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def message | 
					
						
							|  |  |  |     raise 'override me' | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |   class << self | 
					
						
							|  |  |  |     private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # this method delegates @valid? and @message methods to helper validator, passed as block | 
					
						
							|  |  |  |     def delegate_to_helper_validator(&block) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       define_method :helper_validator do | 
					
						
							|  |  |  |         @helper_validator ||= self.instance_eval(&block) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       define_method :valid? do | 
					
						
							|  |  |  |         self.helper_validator.valid? | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       define_method :message do | 
					
						
							|  |  |  |         self.helper_validator.message | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | end |