То, что вы ищете, является полиморфной ассоциацией. Это позволяет вам иметь модель, которая может принадлежать нескольким другим моделям через те же отношения, указав идентификатор, а также класс другого объекта. Например, если идентификатор покупателя 3 отправляет сообщение продавцу с идентификатором 5, ваша таблица сообщений будет иметь следующую строку:
sender_id = 3
sender_type = Buyer
receiver_id = 5
receiver_type = Seller
Для этого в активной записи ваши модели будут выглядеть следующим образом:
class Message < ActiveRecord::Base
belongs_to :sender, :polymorphic => true
belongs_to :receiver, :polymorphic => true
end
class Buyer < ActiveRecord::Base
has_many :sent_messages, :class_name => "Message", :as => :sender
has_many :received_messages, :class_name => "Message", :as => :receiver
end
class Seller < ActiveRecord::Base
has_many :sent_messages, :class_name => "Message", :as => :sender
has_many :received_messages, :class_name => "Message", :as => :receiver
end