demarches-normaliennes/app/models/invite.rb

46 lines
1.3 KiB
Ruby
Raw Normal View History

2020-08-06 16:35:45 +02:00
# == Schema Information
#
# Table name: invites
#
# id :integer not null, primary key
# email :string
# email_sender :string
# message :text
# created_at :datetime
# updated_at :datetime
# dossier_id :integer
# user_id :integer
#
2018-03-06 13:44:29 +01:00
class Invite < ApplicationRecord
include EmailSanitizableConcern
belongs_to :dossier, optional: false
belongs_to :user, optional: true
before_validation -> { sanitize_email(:email) }
2020-09-28 17:38:49 +02:00
after_create_commit :send_notification
2020-09-25 11:10:12 +02:00
2018-03-06 13:44:29 +01:00
validates :email, presence: true
validates :email, uniqueness: { scope: :dossier_id }
validates :email, format: { with: Devise.email_regexp, message: "n'est pas valide" }, allow_nil: true
# #1619 When an administrateur deletes a `Procedure`, its `hidden_at` field, and
# the `hidden_at` field of its `Dossier`s, get set, effectively removing the Procedure
# and Dossier from their respective `default_scope`s.
# Therefore, we also remove `Invite`s for such effectively deleted `Dossier`s
# from their default scope.
2020-02-05 16:09:03 +01:00
scope :kept, -> { joins(:dossier).merge(Dossier.kept) }
default_scope { kept }
2020-09-25 11:10:12 +02:00
def send_notification
if self.user.present?
InviteMailer.invite_user(self).deliver_later
else
InviteMailer.invite_guest(self).deliver_later
end
end
end