0

非常にバグがある Active Record Reputation gem に不満を感じていたので、Rails アプリ用に独自の評価システムを作成しようとしています。とても原始的です。User.rb と Contribution.rb を関連付けて、user_id と value フィールドを持つ Contribution リソースを作成しました。ユーザーがなんらかの方法でアプリに貢献するたびに、ポイントを獲得できます。ユーザーが質問をすると、これらの行が Questions コントローラーの create アクションに含まれます。

 @contribution = current_user.contributions.build({:value => 3})
 @contribution.save

ユーザーがサイトのいくつかのタグを編集した場合、スーパーユーザーの管理作業に報酬を与えるために同じことを行います

 @contribution = current_user.contributions.build({:value => 2})
 @contribution.save

これにより、ユーザーの総合的な評判を計算することが非常に簡単になります。

これに関する 1 つの問題は、ユーザーがこのアプリとその評判を気にかけている架空の世界では、システムを簡単に操作できることです。たとえば、ユーザーはカテゴリまたはタグを更新し続けることができ、更新するたびにさらに 2 ポイントを獲得できます。そのため、ユーザーがどのようなアクションを行ったかを何らかの形で記録したいと考えました。

現在、ユーザーがポイントを獲得できるすべての作業は何らかの形で Question.rb に関連付けられていますが、タグの更新、カテゴリの更新、他の人の回答への賛成投票などでポイントを獲得します。十分ではありません。

私があなたに話した内容に基づいて、私が望むことを達成するために貢献リソースを構築する方法を教えていただけますか?

たとえば、データベースに多くの null フィールドを残す方法を考えたので、それは良い方法ではないと思いました。'answering_question' ' ' ' 'question_idなどの複数のブール値フィールドを追加して、アクションが実行されるたびに、たとえば 'updating_category' が実行されているかどうかを 'true' で記録します。ただし、前述のように、さまざまな種類の貢献に報酬を与えるようにすると、各行に使用されていない列が多数存在することになります。updating_categoryupdating_tags

それが「本当の問題」なのかどうか(私はそれについて読んだことがありますが、回避する必要があるかどうかはわかりません)、または各ユーザーがポイントを獲得するために行っている活動の種類を記録するより良い方法があるかどうかはわかりません. .

現在の協会のいくつか

User has_many :answers
Question.rb has_many :categories
Question.rb has_many :tags
4

1 に答える 1

1

私の Rails アプリケーションでは、active_record_reputations_system よりも優れた thumps_up gem を使用しています。よりシンプルです。

https://github.com/bouchard/thumbs_up

于 2013-04-29T00:52:49.543 に答える