51 lines
972 B
Ruby
51 lines
972 B
Ruby
class Domain < ApplicationRecord
|
|
has_many :stories
|
|
belongs_to :banned_by_user,
|
|
class_name: "User",
|
|
inverse_of: false,
|
|
optional: true
|
|
validates :banned_reason, length: {maximum: 200}
|
|
|
|
validates :domain, presence: true
|
|
|
|
def ban_by_user_for_reason!(banner, reason)
|
|
self.banned_at = Time.current
|
|
self.banned_by_user_id = banner.id
|
|
self.banned_reason = reason
|
|
save!
|
|
|
|
m = Moderation.new
|
|
m.moderator_user_id = banner.id
|
|
m.domain = self
|
|
m.action = "Banned"
|
|
m.reason = reason
|
|
m.save!
|
|
end
|
|
|
|
def unban_by_user_for_reason!(banner, reason)
|
|
self.banned_at = nil
|
|
self.banned_by_user_id = nil
|
|
self.banned_reason = nil
|
|
save!
|
|
|
|
m = Moderation.new
|
|
m.moderator_user_id = banner.id
|
|
m.domain = self
|
|
m.action = "Unbanned"
|
|
m.reason = reason
|
|
m.save!
|
|
end
|
|
|
|
def banned?
|
|
banned_at?
|
|
end
|
|
|
|
def n_submitters
|
|
stories.count("distinct user_id")
|
|
end
|
|
|
|
def to_param
|
|
domain
|
|
end
|
|
end
|