1

私は次のモデルを持っています:

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

それ以外に、この問題にどのようにアプローチしますか?

4

1 に答える 1