前提・実現したいこと
現在制作中のサービスで、友人をサービスに招待することでインセンティブを渡す
招待機能をつけたいと思っております。Dropboxのように、n人招待するとnGBの容量プレゼントのような機能を想定しています。
招待したと判断する方法は二種類で、
- 各ユーザーごとに発行したTokenを持つ会員登録ページから登録した際
- 会員登録後にTokenを設定ページから手動で入力した際
で想定しています。
開発環境はRails5+PostgreSQLです。
ユーザーが複数のクラス存在するためpolymorphicを使って招待関係を
以下のようなテーブルで保存しています。
Invitation | |
---|---|
inviter_id(招待者) | integer |
inviter_type | string |
invitee_id(被招待者) | integer |
invitee_type | string |
発生している問題
重複して招待できないようにするため、
- 同じ人を複数回招待できないようにする
- お互いを招待できないようにする(User1->User2を招待したら、User2->User1にはもう招待できない)
となるようなユニーク制約をDB上に持たせたいと思っております。
この際、複合ユニーク制約を書けてUser1->User2の組み合わせがユニークになるように制約をかける方法はわかるのですが、
User2->User1も含めてユニークになるように制約を掛ける方法がわかりません。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。