20 lines
607 B
Ruby
20 lines
607 B
Ruby
module Bubble::Assignable
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
has_many :assignments, dependent: :destroy
|
|
|
|
has_many :assignees, through: :assignments
|
|
has_many :assigners, through: :assignments
|
|
|
|
scope :assigned_to, ->(user) { joins(:assignments).where(assignments: { assignee: user }) }
|
|
scope :assigned_by, ->(user) { joins(:assignments).where(assignments: { assigner: user }) }
|
|
end
|
|
|
|
def assign(users, assigner: Current.user)
|
|
(Array(users) - assignees).tap do |users|
|
|
users.each { |user| assignments.create!(assignee: user, assigner: assigner) }
|
|
end
|
|
end
|
|
end
|