initialize is called with Contact.new, Contact.find constructs object using Contact.instantiate. You can probably do this:
class Contact class << self def instantiate_with_contact_preference(record)
object = instantiate_without_contact_preference(record)
# Do whatever you want with the object here
object
end
alias_method_chain :instantiate, :contact_preference
end end
-Jonathan