0

我有一个 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 是多少(是或否)?
  • 如何检查特定用户是否进行了投票?

实现平均 yesVote 计算以使性能不下降的最佳方法是什么?

4

2 回答 2

1

我会在 Book 中添加一个 totalVotes。为每个是票递增。然后一个简单的 count() 对一本书的投票以及 totalVotes 值就可以满足您的需求。

更新:回答您的评论问题:

  1. def yesVotes = Vote.findAllByBookAndYesVote(bookInstance, Boolean.TRUE)

  2. def votes = Vote.findAllByBook(bookInstance)

  3. def userVote = Vote.findByUserAndBook(userInstance, bookInstance)

于 2012-11-05T22:58:36.633 回答
0

好吧,我的意见是:

  1. 第一种方式 - 一个带有方法 addVote(user, book, true/false) 的服务,以及另外两个方法 addPositiveVote(user, book) 和 addNegativeVote(user, book);

  2. 第二种方式 - 业务规则应该在域中,在书 addVote(user, true/false) 中放置一个方法 addVote。

这是一个简单的过程,性能不下降,我的考虑只考虑建模。

对不起,我的英语不好。

于 2012-11-06T14:03:07.890 回答