2013-12-09 98 views
1

我是新來的Grails,有些東西對我來說依然模糊。需要一些解釋來了解Grails是如何工作的

我想創建一個類似Twitter的應用程序。由於用戶同時擁有追隨者和以下羣組,因此我創建了一個GroupMyTwitter域。

我不明白的是這背後的邏輯。我GroupMyTwitter域是這樣的:

class GroupMyTwitter 
{ 
    String name; 

    static constraints = { name blank : false; } 

    static hasMany = [users:UserMyTwitter]; 
    static belongsTo = [owner:UserMyTwitter]; 
} 

每當我創造,我也創建關聯到他兩組用戶時間:

GroupMyTwitter followers = new GroupMyTwitter (
    name:"followers", 
    owner: user).save(flush: true, failOnError: true) 
// And same for followings 

現在,我只是想知道...我怎麼能訪問這些羣體獲得追隨者的數量,添加或刪除一些?

感謝您的幫助。

+0

可以請你加'UserMyTwitter'的內容? – micha

+0

是的,但我認爲相關部分是我的UserMyTwitter域有這個屬性:'static hasMany = [groupes:GroupCwitter];'。所以,如果我做'user.groupes.size()'我正確地得到2(追隨者和追隨者),但我怎樣才能訪問這些組? – Rob

回答

3

基礎上hasManybelongsTo變量格姆自動爲您創建了一些實例字段:

static hasMany = [users:UserMyTwitter]; 

這將創建一個內部GroupMyTwitterSet類型的字段users。 你可以訪問此Set像任何其他領域:

class GroupMyTwitter { 
    List users 
    static hasMany = [users:UserMyTwitter]; 
    ... 
} 

這將導致格姆使用List爲:

followers.users.add(userA) // add a user 
followers.users.remove(userB) // remove a user 
followers.users.size()  // number of users 

// don't forget to save the group after you modfied the `users` collection: 
followers.save(failOnError: true) 

根據您的需求來使用的List而不是Set它可能是有用的users集合而不是Set

一個List有一個定義的順序,並允許您通過索引來訪問某些內容:

UserMyTwitter user = followers.users[4] // get the 5th user 
+0

明白了,謝謝! – Rob