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

ブックに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)を持つ1つのサービス、および他の2つのメソッドaddPositiveVote(user、book)およびaddNegativeVote(user、book);

  2. 2番目の方法-ビジネスルールはドメイン内にある必要があり、ブックaddVote(user、true / false)にメソッドaddVoteを配置します。

これは単純なプロセスであり、パフォーマンスは低下しません。私の考慮事項はモデリングのみを考慮しています。

英語が下手でごめんなさい。

于 2012-11-06T14:03:07.890 に答える