私は次のモデルを持っています:
User
...
Group
...
Sharing
objectId (Either UserId GroupId)
Sharing
エンティティでは、 or のいずれかを保存し、それらを区別したいと考えていUserId
ますGroupId
。単に使用Either
しても機能しません:
- 範囲外: 型コンストラクタまたはクラス `UserId'
- 範囲外: 型コンストラクタまたはクラス `GroupId'
新しい sum-type を追加しても機能しません:
data SharingIdType = SharingUserId UserId | SharingGroupId GroupId
- 範囲外: 型コンストラクタまたはクラス `SharingIdType'
および型SharingIdType
を使用するため、別のモジュールに移動することはできません。私が見る唯一の方法は、 /のような共有タイプごとにエンティティを作成することです。UserId
GroupId
UserSharing
GroupSharing
それ以外に、この問題にどのようにアプローチしますか?