Sha256: 8f5a58521a78d710e13192fddacf451c7979e40010af00334c17865370aa3f48

Contents?: true

Size: 1.38 KB

Versions: 4

Compression:

Stored size: 1.38 KB

Contents

module CensorBear
  class ModLog < ApplicationRecord
    REASONS = %w(无 广告/SPAM 恶意灌水 违规内容 文不对题 重复发布 其它)
    belongs_to :record, polymorphic: true, required: false

    def record_path
      return '#' if record.blank?

      record.censor_show_path
    end

    def delete(reason)
      return if record.blank?
      return if record.discarded?
      # ugc内容需要开软删,便于撤销&查看统计,可以定时删除统计并删除软删内容,类似回收站机制
      raise NoMethodError.new("undefined censor_delete for record") unless record.respond_to?(:censor_delete)

      ret = record.censor_delete
      handled!(reason) if ret
    end

    def approve
      return if record.blank?
      raise NoMethodError unless record.respond_to?(:censor_approve)

      ret = record.censor_approve
      handled! if ret
    end

    def ban_user
      return if record.blank?
      raise NoMethodError unless record.respond_to?(:censor_ban_user)

      ret = record.censor_ban_user
      delete if ret
    end

    scope :pending, -> { where(status: 0) }
    scope :handled, -> { where(status: 1) }
    scope :suspended, -> { where(status: 2) }

    def handled!(reason = nil)
      update_columns(status: 1, reason: reason)
    end

    def pend!
      update_columns(status: 0)
    end

    def suspend!
      update_columns(status: 2)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
censor_bear-0.1.14 app/models/censor_bear/mod_log.rb
censor_bear-0.1.13 app/models/censor_bear/mod_log.rb
censor_bear-0.1.12 app/models/censor_bear/mod_log.rb
censor_bear-0.1.11 app/models/censor_bear/mod_log.rb