2009-07-11 6 views
0

Grailsで友人関係をモデル化するには?今まで私のUserクラスは、多くの信者友達をモデル化する方法 - Grailsの友情関係

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 

}

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

どのようにハンドシェイクを実装しますか(保留中の友人関係を受け入れるか拒否するか)

答えて

3

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

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

class FriendRequest { 
    User fromUser 
    User toUser 
} 

こうしてフレンドシップは、2つのこと(ユーザーとトラックのステータスに関連する)を行う必要はありません。そして、友人は自然なオブジェクト関係になり、フェッチを最適化するなどの作業を少し簡単にすることができます。

関連する問題