0

ユーザーがリストを作成し、他のユーザーをリストに招待できる RoR アプリケーションを開発しています。招待データ モデルにどのようにアプローチすればよいかわかりません。ユーザー招待モデルはかなり一般的だと思いますが、良い例は見つかりませんでした。

どのユーザーも自分のリストに他のユーザーを招待できるようにしたいと思います。招待された人 (別のユーザー) は、招待を受け入れるか拒否することができます。

現在、ユーザーとリストの間に多対多の関係があります。これら 2 つのエンティティ (lists_users) 間の結合テーブルは、招待に関する情報を保持する必要がありますか? 別のテーブルである招待状を作成し、ユーザーが招待状を承諾または拒否するときにそこからレコードを追加および削除した方がよいでしょうか? 後者が望ましい場合、リストの所有者 (ユーザー) とリストの招待者 (ユーザー) をどのように処理すればよいですか?

アドバイスをいただければ幸いです。ありがとう!

解決

ユーザーモデルで外部キーを含むテーブルを指定する必要があることがわかりました。すなわち

  has_many :owned_lists, :class_name => "List", :foreign_key =>"owner_id"
  has_many :created_invitations, :class_name => "Invitation", :foreign_key =>"invitor_id"
  has_many :received_invitations,:class_name => "Invitation", :foreign_key => "invitee_id"

-ニック

4

1 に答える 1

1

これらは私自身の 2 セントにすぎませんが、これが私のやり方です。

lists_usersリストに参加したユーザーを追跡するために、1 つのテーブルを保持します。

リストの所有者を追跡するためuser_idに、テーブルに列が必要です。lists

次に、招待状を追跡するために、たとえば 、および を含む「招待状」モデルを作成しinvitee_idますinviter_idlist_id招待状は使用すると破棄されます。招待状には、おそらく何らかの有効期限の日付も必要です。

モデルは次のようになります。

class List < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :owner, class_name: "User"
  has_and_belongs_to_many :invitations
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :lists
  has_many :owned_lists, class_name: "List"
  has_many :created_invitations, foreign_key: "invitor_id"
  has_many :received_invitations, foreign_key: "invitee_id"
end

class Invitation < ActiveRecord::Base
  belongs_to :invitor, class: "User"
  belongs_to :invitee, class: "User"
  belongs_to :list
end
于 2012-11-05T18:45:05.690 に答える