0

Grails で友人 - 友情関係をどのようにモデル化しますか? これまで、私の User クラスには多くのフォロワーがいました

class User {
//Searchable plugin
static searchable = true

String userId
String password
boolean enabled = true

// For Spring Security plugin's user registration.
String email
String userRealName
boolean emailShow

Date dateCreated
Profile profile

static hasMany = [
        posts : Post,
        tags : Tag,
        following : User,
        authorities : Role,
        notifications: Notification,
        locations: Location,
        incomingLocations:IncomingLocation,

]
static belongsTo = Role


static constraints = {
    userId(blank: false, size:3..20, unique: true)
    password(blank: false)
    dateCreated()
    profile(nullable: true)
    userRealName(nullable: true, blank: true)
    email(nullable: true, blank: true)
}


static mapping = {
    profile lazy:false
}

}

しかし、私は次を変更したいと思います:友情のようなもののためのユーザー:友情と次のように友情クラスを作成します:

class Friendship {

static belongsTo= [user:User]
User friend2
boolean areFriends

}

これは理想的な実装ですか?

握手(保留中の友情を受け入れる/拒否する)をどのように実装しますか?

4

1 に答える 1

3

Friendship を直接モデル化する必要はないかもしれません。ユーザーを友達として関連付ける hasMany 関係を持つことができます。誰かが FriendRequest を受け入れるまで、その関係は作成されません。友達になりたくない場合は、2 人のユーザー間の関係を削除してください。

class User {
    static hasMany = [friends:User]
}

class FriendRequest {
    User fromUser
    User toUser
}

そうすれば、フレンドシップは 2 つのこと (ユーザーの関連付けとステータスの追跡) を行う必要がなくなります。また、フレンドは自然なオブジェクト関係になり、フェッチの最適化などを少し簡単にすることができます。

于 2009-07-11T20:08:19.470 に答える