HogeUser,MogeUser,PogeUserというモデルがあって、
それぞれのユーザー同士で1対1の簡易メッセージの送受信をさせたい時、下記のような設計で問題無いでしょうか?

■モデルのアソシエーション
HogeUser hasOne Mailbox
MogeUser hasOne Mailbox
PogeUser hasOne Mailbox
Mailbox HATBM Message

■DB
mailboxes:
id

mailboxes_messages:
mailbox_id
message_id
sended (true=送信側, false=受信側)
opened(true=開封済, false=未開封)

messages:
id
title(件名)
body(本文)
created

*_usersテーブルはそれぞれmailbox_idフィールドを持っています。
*_usersはそれぞれ構造が全く異なるのでusersとして統一させることはできません。