ゲームのようなRailsアプリをセットアップしようとしています。アプリにはユーザーがいて、それぞれが作成できるポーンを持っています。ユーザーは、他のユーザーと自分が作成したポーンを検索し、必要に応じて自分のポーンの 1 つを使用して別のユーザーに挑戦できます。チャレンジされたユーザーは、チャレンジを受け入れる/辞退することができます。
現在、ユーザーのポーンを追加/削除できます。モデルは次のようになります。
class User < ActiveRecord::Base
has_many :pawns, dependent: :destroy
と
class Pawn < ActiveRecord::Base
belongs_to :user
ここで、User1 が User2 によって作成された Pawn に挑戦したい場合、User2 の Pawn のリストを見て、必要な Pawn の [Challenge] ボタンをクリックします。次に、ユーザー 1 は自分のポーンの 1 つを選択してチャレンジに使用し、[保存] をクリックする必要があります。ここで、User2 はチャレンジを受け入れるか拒否する必要があります。
課題をどのように設定するかについて頭を悩ませています。私の考えでは、各 Pawn は自己参照型の多対多の関係を持ち、まるで友情関係がセットアップされるようになると思います。ただし、チャレンジをユーザーまたはポーンに関連するものと見なす必要があるかどうかはわかりません。
このようなものをモデル化する最良の方法は何ですか?
編集:
これが私が達成しようとしていることの図です。私は間違いなく、ある種の関連付けのセットアップが必要だと思います。結果には、そのチャレンジのポーンの統計 (time_spent、clicks_made など) が保持されます。チャレンジには、勝者などの列もあります。