Files
nairobi/app/models/flag.rb
2015-09-07 17:24:53 +02:00

30 lines
823 B
Ruby

class Flag < ActiveRecord::Base
belongs_to :user
belongs_to :flaggable, polymorphic: true, counter_cache: true, touch: true
scope(:by_user_and_flaggable, lambda do |user, flaggable|
where(user_id: user.id,
flaggable_type: flaggable.class.to_s,
flaggable_id: flaggable.id)
end)
scope :for_comments, ->(comments) { where(flaggable_type: 'Comment', flaggable_id: comments) }
def self.flag(user, flaggable)
return false if flagged?(user, flaggable)
create(user: user, flaggable: flaggable)
end
def self.unflag(user, flaggable)
flags = by_user_and_flaggable(user, flaggable)
return false if flags.empty?
flags.destroy_all
end
def self.flagged?(user, flaggable)
return false unless user
!! by_user_and_flaggable(user, flaggable).try(:first)
end
end