Topic: Different model validation for different controllers

I've got a person model that can be updated by administrators in an admin controller and can also be updated by users through a profile controller. When a user edits their person model additional fields must be required that are not required when the admin updates the same person model. How can I do this? Any advice would be greatly appreciated.

For administrators only :first_name, :surname, :contact_type_id should be required.
For users everything shown below is required.

Person model:

class Person < ActiveRecord::Base
    has_and_belongs_to_many :streams
    has_and_belongs_to_many :roles
    has_and_belongs_to_many :committees
    has_and_belongs_to_many :organisations
    belongs_to :contact_type
    belongs_to :membership_type
    validates_presence_of :title, :first_name, :surname, :email, :greeting, :daytime_tel, :evening_tel, :town, :postcode, :contact_type_id
    validates_uniqueness_of :email,
                                                    :if => {|a| not}
    validates_format_of :email,
                                            :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                                            :if => {|b| not},
                                            :message => "has an invalid format"
    validates_format_of :alternative_email,
                                            :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                                            :if => {|c| not c.alternative_email.blank?}, #alt to allow_nil which doesn't work with validates_format_of
                                            :message => "has an invalid format"