我有一个Book类,需要实现是/否投票功能。我的域类看起来像这样:
class Book {
String title
static hasMany = [votes: Vote]
}
class User {
String name
static hasMany = [votes: Vote]
}
class Vote {
boolean yesVote
static belongsTo = [user: User, book: Book]
}
实施图书类投票的最佳方式是什么?我需要以下信息:
实现平均yesVote计算的最佳方法是什么,以便性能不会下降?
答案 0 :(得分:1)
我会在Book中添加一个totalVotes。增加每个是投票。然后,对一本书的简单count()投票以及totalVotes值可以为您提供所需的内容。
更新:回答您的评论问题:
def yesVotes = Vote.findAllByBookAndYesVote(bookInstance, Boolean.TRUE)
def votes = Vote.findAllByBook(bookInstance)
def userVote = Vote.findByUserAndBook(userInstance, bookInstance)
答案 1 :(得分:0)
嗯,我的意见是:
第一种方式 - 使用方法addVote(user,book,true / false)的一个服务,以及另外两个方法addPositiveVote(user,book)和addNegativeVote(user,book);
第二种方式 - 业务规则应该在域中,在addVote一书中添加方法addVote(user,true / false)。
这是一个简单的过程,性能不会下降,我的考虑只考虑建模。
抱歉我的英语不好。