| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  | module Validators | 
					
						
							|  |  |  |   class Base | 
					
						
							| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def initialize(model, options={}) | 
					
						
							|  |  |  |       @model = model | 
					
						
							|  |  |  |       @options = options | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def validate! | 
					
						
							|  |  |  |       raise InvalidRecord.new(message) unless valid? | 
					
						
							| 
									
										
										
										
											2015-11-03 11:46:54 +03:00
										 |  |  |     rescue StandardError => e | 
					
						
							| 
									
										
										
										
											2016-01-21 20:46:15 +03:00
										 |  |  |       DevopsLogger.logger.error [e.message, e.backtrace].join("\n") | 
					
						
							| 
									
										
										
										
											2015-11-03 11:46:54 +03:00
										 |  |  |       raise InvalidRecord.new("An error raised during validation with #{self.class}: #{e.class}: #{e.message}") | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def valid? | 
					
						
							|  |  |  |       raise 'override me' | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-11-26 16:59:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def message | 
					
						
							|  |  |  |       raise 'override me' | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     class << self | 
					
						
							|  |  |  |       private | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |       # this method delegates @valid? and @message methods to helper validator, passed as block | 
					
						
							|  |  |  |       def delegate_to_helper_validator(&block) | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |         define_method :helper_validator do | 
					
						
							|  |  |  |           @helper_validator ||= self.instance_eval(&block) | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |         define_method :valid? do | 
					
						
							|  |  |  |           self.helper_validator.valid? | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |         define_method :message do | 
					
						
							|  |  |  |           self.helper_validator.message | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | end |