如何实现Grails域类的投票?

时间:2012-11-05 22:31:24

标签: grails frameworks gorm voting voting-system

我有一个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计算的最佳方法是什么,以便性能不会下降?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

嗯,我的意见是:

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

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

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

    抱歉我的英语不好。