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