如何塑造朋友 - Grails中的友谊关系

时间:2009-07-11 19:54:31

标签: grails social-networking gorm

你如何为朋友建模 - 在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

}

这是一个理想的实施吗?

你将如何实施握手(接受/拒绝未决的友谊)?

1 个答案:

答案 0 :(得分:3)

您可能不需要直接为友谊建模。您可以拥有一个将用户关联为朋友的hasMany关系。在有人接受FriendRequest之前,您不会创建该关系。如果他们不再想成为朋友,那么只需删除2个用户之间的关系。

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

class FriendRequest {
    User fromUser
    User toUser
}

这样,友谊不需要做两件事(关联用户和跟踪状态)。和朋友成为一种自然的物体关系,可以使一些事情变得更容易优化。