37 lines
783 B
Ruby
37 lines
783 B
Ruby
class SuperVoter < ApplicationRecord
|
|
MAGNITUDE = 3
|
|
DURATION = 1.week
|
|
|
|
belongs_to :user
|
|
validates_uniqueness_of :user_id
|
|
after_create :update_user_on_create
|
|
after_destroy :update_user_on_destroy
|
|
|
|
def self.prune!
|
|
where("created_at < ?", DURATION.ago).destroy_all
|
|
end
|
|
|
|
def self.init!
|
|
prune!
|
|
without_timeout do
|
|
report = PostVoteSimilarity.new(User.admins.first.id)
|
|
|
|
report.calculate_positive(15).each do |element|
|
|
unless SuperVoter.where("user_id = ?", element.user_id).exists?
|
|
SuperVoter.create(:user_id => element.user_id)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def update_user_on_create
|
|
user.is_super_voter = true
|
|
user.save
|
|
end
|
|
|
|
def update_user_on_destroy
|
|
user.is_super_voter = false
|
|
user.save
|
|
end
|
|
end
|