| 
				
			 | 
			
			
				@@ -1,4 +1,6 @@ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				1
			 | 
			
			
				 class Person < ApplicationRecord 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+  has_one :user 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				4
			 | 
			
			
				   validates :email, presence: true, uniqueness: true 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				5
			 | 
			
			
				   validates :first_name, presence: true 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				6
			 | 
			
			
				   validates :last_name, presence: true 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -7,7 +9,9 @@ class Person < ApplicationRecord 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				9
			 | 
			
			
				   validate :birth_date_cannot_be_in_future 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				10
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				9
			 | 
			
				11
			 | 
			
			
				   before_validation :not_admin_if_nil 
			 | 
		
	
		
			
			| 
				
			 | 
			
				12
			 | 
			
			
				+  before_save :update_user_email, if: :email_changed? 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				13
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				14
			 | 
			
			
				+  private 
			 | 
		
	
		
			
			| 
				11
			 | 
			
				15
			 | 
			
			
				   def birth_date_cannot_be_in_future 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				16
			 | 
			
			
				     if self.birth_date > Date.today 
			 | 
		
	
		
			
			| 
				13
			 | 
			
				17
			 | 
			
			
				       errors.add(:birth_date, "can't be in the future.") 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -17,4 +21,8 @@ class Person < ApplicationRecord 
			 | 
		
	
		
			
			| 
				17
			 | 
			
				21
			 | 
			
			
				   def not_admin_if_nil 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				22
			 | 
			
			
				     self.is_admin ||= false 
			 | 
		
	
		
			
			| 
				19
			 | 
			
				23
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				25
			 | 
			
			
				+  def update_user_email 
			 | 
		
	
		
			
			| 
				
			 | 
			
				26
			 | 
			
			
				+    self.user.update!(email: self.email) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				27
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				28
			 | 
			
			
				 end 
			 |