Вы можете сделать это с помощью пары простых has_many
ассоциаций. Поскольку он самореферентный, вам нужно переопределить часть магии Rails, чтобы она заработала.
class User < ActiveRecord::Base
has_many :sent_messages, :class_name => 'Message', :foreign_key => 'sender_id'
has_many :received_messages, :class_name => 'Message', :foreign_key => 'recipient_id'
end
class Message < ActiveRecord::Base
belongs_to :sender, :class_name => 'User'
belongs_to :recipient, :class_name => 'User'
end
У Rails нет более чистого способа создания ассоциативных ссылок, о которых я знаю.