Do you really want to limit your message tracking to just one user per user? In your example, if you'd have to have two fields, last_messaged_user_id and last_messaged_date on your User model. So your two user records would look like:
id name last_messaged_user_id last_messaged_date
1 A 2 2007-12-19
2 B 1 2007-12-19
You would never be able to track multiple messages this way. A better design, if I understand your problem (which I doubt), is to use a join table and a has_many :through. The join table would have a from_user_id, a to_user_id, a date/time, and could even have the message, in which case, you could call it messages. Even if you don't keep the message text here, my opinion is to not clutter up the user record with information not specifically related to the user. This often results in over-normalization, in which case I sometimes have to denormalize some things, but I'd rather go that way than to have chaotic tables/models.