2024-02-25 12:15:55 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-06-14 22:27:53 -04:00
|
|
|
class PostApproval < ApplicationRecord
|
2016-11-01 19:47:46 -04:00
|
|
|
belongs_to :user
|
2017-04-03 01:10:36 -04:00
|
|
|
belongs_to :post, inverse_of: :approvals
|
|
|
|
|
|
|
|
validate :validate_approval
|
2016-10-31 20:51:44 -04:00
|
|
|
|
2017-04-03 01:10:36 -04:00
|
|
|
def validate_approval
|
2018-05-11 18:13:42 -04:00
|
|
|
post.lock!
|
|
|
|
|
2017-04-03 01:10:36 -04:00
|
|
|
if post.is_status_locked?
|
|
|
|
errors.add(:post, "is locked and cannot be approved")
|
|
|
|
end
|
|
|
|
|
2017-04-03 14:45:17 -04:00
|
|
|
if post.status == "active"
|
|
|
|
errors.add(:post, "is already active and cannot be approved")
|
|
|
|
end
|
2019-04-09 22:20:19 -04:00
|
|
|
end
|
|
|
|
|
2018-05-05 14:07:49 -04:00
|
|
|
|
|
|
|
concerning :SearchMethods do
|
|
|
|
class_methods do
|
|
|
|
def post_tags_match(query)
|
2023-02-21 16:50:17 -05:00
|
|
|
where(post_id: Post.tag_match_sql(query))
|
2018-05-05 14:07:49 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def search(params)
|
|
|
|
q = super
|
|
|
|
|
|
|
|
if params[:post_tags_match].present?
|
|
|
|
q = q.post_tags_match(params[:post_tags_match])
|
|
|
|
end
|
|
|
|
|
2023-08-03 16:01:53 -04:00
|
|
|
q = q.where_user(:user_id, :user, params)
|
2018-05-05 14:07:49 -04:00
|
|
|
q = q.attribute_matches(:post_id, params[:post_id])
|
|
|
|
|
2023-07-07 08:32:57 -04:00
|
|
|
q.apply_basic_order(params)
|
2018-05-05 14:07:49 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2016-10-31 20:51:44 -04:00
|
|
|
end
|