使用Grails Fixture插件动态加载子项

时间:2012-09-12 01:05:59

标签: grails groovy

我正在尝试使用Fixture插件在Grails应用程序中加载数据。

class Author {
  String name 
}

class Book {
  String title
  hasMany = [authors:Author]
}

我将作者加载到一个单独的文件中并将其包含在第一本书中。

//author fixture
fixture {
  author1(Author) {
    name = 'Ken Follett'
  }
  author2(Author) {
    name = 'Martin Fowler'
  }
}

//book fixture
fixture {
  include 'author'
  "book"(Book) {
    title = 'Your favorite book'
    authors = [author1, author2]
  }
}

一切正常。我不能做的是替换[author1,author2],这样我就可以动态(和随机)分配作者。类似的东西:

def dynamicallyBuiltAuthorList = "author1, author2, author100"
authors = ["${dynamicallyBuiltAuthorList}"]

到目前为止,我尝试的几乎所有内容都给了我一个没有匹配的编辑器或转换策略发现错误。

提前感谢Grails大师!

2 个答案:

答案 0 :(得分:1)

根据您在下面的答案(以及之前对此答案的编辑),这可能是一种更好的方法:

def dynamicallyBuiltAuthorList = [ 'author1', 'author2', 'author100' ].collect {
  ref( "$it" )
}
authors = dynamicallyBuiltAuthorList

答案 1 :(得分:0)

最后答案很简单:

def authorList = []
def dynamicallyBuiltAuthorList = [ 'author1', 'author2', 'author100' ].collect {
   authorList.add(ref("$it"))
}
authors = authorList

感谢蒂姆的帮助!