2014-12-07 57 views
0

我是新来的Grails和我有两个领域类是这样的:跨域类限制

class User {  
    String username 
    String password 

    static hasMany = ['boards':Board] 
    static belongsTo = ['belongsToBoard':Board] 
} 

class Board { 
    String message 
    boolean starred 
} 

现在我要像限制“User可以有一个boardmessage是唯一”(请注意,我不想Board是唯一的,但每个Usermessage应该是唯一的,例如:

User : batman 
Board: test,test (messages) 

是无效的,在那里为:

User: batman 
Board: test 

User: batgirl 
Board: test 

是有效的。

是否可以在grails constraints块中这样做?如果不是,我该怎么做?

在此先感谢。

回答

1

您的belongsTo属性是非同寻常的 - 如果这是一个很多,即用户有很多电路板,那么belongsTo将在董事会一侧。这使级联删除,也只使用两个表;如果这种关系不是双向的,你会得到第三个来管理这种关系。如果它是多对多的,那么你就错过了Board中的hasMany

如果是一对多,你把这个局

static belongsTo = [user: User] 

,那么你可以把董事会2列的唯一约束:

static constraints = { 
    message unique: 'user' 
} 

这是在文档中描述在“独特”下的“约束”部分右侧。

+0

感谢您的回答。但这是我的用例,用户可以拥有自己的主板(1-many),用户也可以属于主板(在这种情况下,用户不拥有主板,但属于其他用户创建的主板。 – batman 2014-12-07 07:22:06