Ich erstelle einen Blog, der Pins und Kommentare hat. Ich frage mich, wie man ein System erstellen kann, mit dem der Administrator Kommentare in Blogs genehmigen kann, bevor Benutzer sie anzeigen können.Ruby on Rails - Admin Kommentar Genehmigung auf einem Blog
Zuerst habe ich versucht, einen Booleschen Feld hinzufügen pinreview
auf meine Kommentare Modell genannt:
comment.rb
class Comment < ActiveRecord::Base
belongs_to :pin
scope :approved, ->{
where(:pinreview => false)
}
scope :pending, -> {
where(:pinreview => true)
}
scope :newest, -> {
order("created_at desc")
}
end
class CommentsController < ApplicationController
def create
@pin = Pin.find(params[:pin_id])
@comment = @pin.comments.create(params[:comment].permit(:name, :body))
redirect_to pin_path(@pin)
end
def destroy
@pin = Pin.find(params[:pin_id])
@comment = @pin.comments.find(params[:id])
@comment.destroy
redirect_to pin_path(@pin)
end
end
ich die Benutzertypen durch Aufzählungen definiert haben:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
enum access_level: [:guest, :admin]
has_many :pins
def admin
admin?
end
def guest
guest?
end
end
Und in meinem Ich habe versucht, Dinge wie folgt:
pins/show.html.erb
...
- if current_user && current_user.admin? ? @pin.comments = Comment.all : @pin.comments = Comment.where(:approved => false)
...
Die gepinnten Post zeigt, nicht aber die Benutzer Kommentare, und wenn als Admin angemeldet, um keinen Raum Kommentare zeigt genehmigen. Wie würde ich die Ansicht für Administratoren erstellen, um Kommentare zu genehmigen und die Kommentare dann in der Gastbenutzeransicht gerendert zu lassen, wenn sie genehmigt wurden?
Auch sollte ich erwähnen, dass Kommentare können von anonymen Benutzern gemacht werden - ein Benutzer nicht angemeldet oder angemeldet sein
auf diese jede Führung zu schätzen wissen.. Ich kann bei Bedarf mehr Code bereitstellen. Vielen Dank.
Warum benötigen Benutzer Stifte? Was nutzt nicht nur ein approved_timestamp? Wenn jemand bewiesen hat, werden Sie wissen, ob es ist und wann es genehmigt wurde. Wenn Sie wirklich wissen müssen, wer genehmigt hat, können Sie mit zwei Feldern gehen: approved_timestamp, approved_by_id (oder etwas Ähnliches) – lcguida
Wie von lcguida angegeben, ist es eine gute Form, einen Zeitstempel anstelle eines booleschen zu verwenden. Das habe ich vor vielen Jahren gelernt. –