Я создаю блог с булавками и комментариями. Мне интересно, как создать систему, посредством которой администратор может одобрять комментарии к блогам, прежде чем пользователи смогут их просматривать.Ruby on Rails - одобрение комментариев администратора в блоге
Сначала я попытался добавить логическое поле, называемого pinreview
моих комментариев модели:
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
Я определил типы пользователей через перечисления:
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
И в моем Я пробовал такие вещи:
pins/show.html.erb
...
- if current_user && current_user.admin? ? @pin.comments = Comment.all : @pin.comments = Comment.where(:approved => false)
...
запиннингованном почтовые шоу, но не комментарии пользователей, а также при входе в систему как администратор, нет места, чтобы утвердить комментарии шоу. Как мне создать представление для администраторов для одобрения комментариев, а затем получить комментарии, представленные в гостевом представлении пользователя при его одобрении?
Кроме того, я должен отметить, что комментарии могут быть сделаны анонимными пользователями - пользователь не должен быть подписан до или вошли в
Оценил никаких указаний по этому вопросу.. При необходимости я могу предоставить больше кода. Благодарю.
Почему пользователи должны булавки? Что вместо этого используется не только approved_timestamp? Если кто-то докажет, вы узнаете, есть ли это и когда он был одобрен. Если вам действительно нужно знать, кто их одобрил, вы можете пойти с 2 поля approved_timestamp, approved_by_id (или что-то подобное) – lcguida
Как указано в lcguida, это хорошая форма для использования временной метки вместо логического. Это то, что я узнал много лет назад. –