forgeplus/app/models/organization_user.rb

46 lines
1.5 KiB
Ruby
Raw Normal View History

2021-01-11 17:44:11 +08:00
# == Schema Information
#
# Table name: organization_users
#
# id :integer not null, primary key
# user_id :integer
# organization_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
# Indexes
#
# index_organization_users_on_organization_id (organization_id)
# index_organization_users_on_user_id (user_id)
#
class OrganizationUser < ApplicationRecord
belongs_to :organization
belongs_to :organization_extension, foreign_key: :organization_id, primary_key: :organization_id, counter_cache: :num_users
2021-01-15 14:55:52 +08:00
belongs_to :user
2021-01-11 17:44:11 +08:00
2021-01-15 14:55:52 +08:00
validates :user_id, uniqueness: {scope: :organization_id}
2021-09-15 18:55:58 +08:00
after_create :send_create_message_to_notice_system
after_destroy :send_destroy_message_to_notice_system
2021-01-19 19:02:51 +08:00
def self.build(organization_id, user_id)
2021-01-15 14:55:52 +08:00
org_user = self.find_by(organization_id: organization_id, user_id: user_id)
return org_user unless org_user.nil?
2021-01-19 19:02:51 +08:00
self.create!(organization_id: organization_id, user_id: user_id)
2021-01-11 17:44:11 +08:00
end
2021-01-15 14:55:52 +08:00
def teams
organization.teams.joins(:team_users).where(team_users: {user_id: user_id})
end
2021-09-15 18:55:58 +08:00
def send_create_message_to_notice_system
SendTemplateMessageJob.perform_later('OrganizationJoined', self.user_id, self.organization_id) if Site.has_notice_menu?
2021-09-15 18:55:58 +08:00
end
def send_destroy_message_to_notice_system
SendTemplateMessageJob.perform_later('OrganizationLeft', self.user_id, self.organization_id) if Site.has_notice_menu?
2021-09-15 18:55:58 +08:00
end
2021-01-11 17:44:11 +08:00
end