1) position_title is guarnteed, job_description and position_type are not. Can you add an :unless => triton_id to these?

2) Probably better to add a validation method 

   validate :has_position_type
   def has_position_type
     errors.add(:position_type, "MESSAGE") unless RULE
   end