pundit: convert user feedbacks to pundit.
Allow users to delete feedbacks they've given to other users, not just mods.
This commit is contained in:
@@ -6,8 +6,6 @@ class UserFeedback < ApplicationRecord
|
||||
attr_accessor :disable_dmail_notification
|
||||
validates_presence_of :body, :category
|
||||
validates_inclusion_of :category, :in => %w(positive negative neutral)
|
||||
validate :creator_is_gold
|
||||
validate :user_is_not_creator
|
||||
after_create :create_dmail, unless: :disable_dmail_notification
|
||||
after_update(:if => ->(rec) { CurrentUser.id != rec.creator_id}) do |rec|
|
||||
ModAction.log(%{#{CurrentUser.name} updated user feedback for "#{rec.user.name}":/users/#{rec.user_id}}, :user_feedback_update)
|
||||
@@ -67,26 +65,6 @@ class UserFeedback < ApplicationRecord
|
||||
Dmail.create_automated(:to_id => user_id, :title => "Your user record has been updated", :body => body)
|
||||
end
|
||||
|
||||
def creator_is_gold
|
||||
if !creator.is_gold?
|
||||
errors[:creator] << "must be gold"
|
||||
end
|
||||
end
|
||||
|
||||
def user_is_not_creator
|
||||
if user_id == creator_id
|
||||
errors[:creator] << "cannot submit feedback for yourself"
|
||||
end
|
||||
end
|
||||
|
||||
def deletable_by?(deleter)
|
||||
deleter.is_moderator? && deleter != user
|
||||
end
|
||||
|
||||
def editable_by?(editor)
|
||||
(editor.is_moderator? && editor != user) || (creator == editor && !is_deleted?)
|
||||
end
|
||||
|
||||
def self.available_includes
|
||||
[:creator, :user]
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user