需要一些解释来了解Grails是如何工作的

问题描述:

我是新来的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

基础上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