mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-05-11 01:05:01 -04:00
29 lines
690 B
Ruby
29 lines
690 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Like < ApplicationRecord
|
|
belongs_to :member
|
|
belongs_to :likeable, polymorphic: true, counter_cache: true, touch: true
|
|
validates :member, :likeable, presence: true
|
|
validates :member, uniqueness: { scope: :likeable }
|
|
validate :member_is_not_blocked
|
|
|
|
def likeable_author
|
|
if likeable.respond_to?(:author)
|
|
likeable.author
|
|
elsif likeable.respond_to?(:owner)
|
|
likeable.owner
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def member_is_not_blocked
|
|
return unless member
|
|
|
|
author = likeable_author
|
|
return unless author&.already_blocking?(member)
|
|
|
|
errors.add(:base, "You cannot like content of a member who has blocked you.")
|
|
end
|
|
end
|