Ich versuche, ein Reputationssystem in eine vorhandene App mit Merit hinzuzufügen.Wie 'Merit Points' zurückgerechnet werden?
Ich möchte Punkte für alle Benutzer basierend auf ihrer historischen Aktivität zurück berechnen. Merit hat eine ziemlich komplizierte interne Struktur mit mehreren Tabellen, und ich denke, dass mir einige wichtige Schritte fehlen. Unten ist, was ich bisher habe, und ich bin dankbar für Hinweise von jedem, der mit diesem Juwel vertrauter ist.
Um die Dinge einfach zu halten, lassen Sie uns sagen, dass ich zu
score 2, to: :user, on: 'comments#create'
wollen und dass ich einen Kommentar Tabelle von Datensätzen voll haben, die so etwas wie dies wie folgt
Comment id: 56, content: "My comment", user_id: 247, commentable_id: 2, commentable_type: 'Object', created_at: "2016-04-04 08:56:17", updated_at: "2016-04-04 17:03:55">
Mein aktueller Ansatz
aussehen siehtComment.all.each do |c|
score_point = Merit::Score::Point.create(num_point: 2, log: nil, created_at: c.created_at)
action = Merit::Action.create(user_id: c.user_id, action_method: 'create', action_value: nil, had_errors: false, target_model: c.class.name, target_id: c.id, processed: true, created_at: c.created_at)
activity_log = Merit::ActivityLog.create(action_id: action.id, related_change_type: "Merit::Score::Point", related_change_id: score_point.id, description: "", created_at: c.created_at)
end
Es gibt auch eine Merit::Score
und Merit::Sash
Tabelle, aber ich bin nicht klar, was diese tun und ob diese Datensätze müssen auch erstellt werden.
Gibt es noch etwas, das ich übersehen habe?
Wie nebenbei, was ist der Zweck von Merit::Action.action_value
, Merit::ActivityLog.description
und Merit::Score::Point.log
, oder sind das einfach freie Textfolgen?
danke @TuteC, ich hatte gesehen, dass SO vorher zu antworten, aber vielleicht die nachfolgenden Kommentare missverstanden haben. Danke fürs klarstellen!! –
hi @ tuteC, welches Format sollte 'Merit :: Action.target_model' sein? Handelt es sich um eine plurale Repräsentation des Modells in Kleinbuchstaben (z. B. Kommentare)? Ich habe Probleme mit dieser Methode Punkte zu generieren. Running 'Merit :: Action.check_unprocessed' ist korrekt zugewiesen Abzeichen und Hinzufügen von Datensätzen zu' Merit :: Score', aber 'Merit :: Score :: Point' bleibt leer. Ich gehe davon aus, dass dies nicht das richtige Ergebnis ist, aber ich kann die Ursache nicht herausfinden. –
macht mir nichts aus, ich musste die vorherigen Punktdefinitionen aus dem Speicher löschen 'Merit :: AppPointRules = Merit :: PointRules.new.defined_rules'. Alles funktioniert jetzt. Danke für ein tolles Juwel !! –