Model Question

Shauna's reply is efficient if you want to model messages being sent to multiple people, but I am not sure it answers your immediate question.

Given your database schema the models should look something like:

User ---   has_many :sent_messages, :classname => "Message", :foreign_key => :from_id   has_many :received_messages, class_name => "Message", :foreign_key => :to_id

Messages ---   belongs_to :sender, :classname => "User", :foreign_key => :from_id   belongs_to :receiver, classname => "User", :foreign_key => :to_id