2014-12-07 35 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