Skip to content
Snippets Groups Projects
university.rb 1.46 KiB
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
# == Schema Information
#
# Table name: universities
#
Sébastien Gaya's avatar
Sébastien Gaya committed
#  id                :uuid             not null, primary key
#  address           :string
#  city              :string
#  country           :string
#  identifier        :string
#  mail_from_address :string
#  mail_from_name    :string
#  name              :string
#  private           :boolean
Sébastien Gaya's avatar
Sébastien Gaya committed
#  sms_sender_name   :string
Sébastien Gaya's avatar
Sébastien Gaya committed
#  zipcode           :string
#  created_at        :datetime         not null
#  updated_at        :datetime         not null
Arnaud Levy's avatar
Arnaud Levy committed
#
class University < ApplicationRecord
Sébastien Gaya's avatar
Sébastien Gaya committed
  include WithPeople
pabois's avatar
pabois committed
  include WithCommunication
Arnaud Levy's avatar
Arnaud Levy committed
  include WithEducation
pabois's avatar
pabois committed
  include WithIdentifier
Arnaud Levy's avatar
Arnaud Levy committed
  include WithResearch
pabois's avatar
pabois committed
  include WithUsers

  has_one_attached_deletable :logo
Arnaud Levy's avatar
Arnaud Levy committed

Sébastien Gaya's avatar
Sébastien Gaya committed
  # Can't use dependent: :destroy because of attachments
  # We use after_destroy to let the attachment go first
  has_many :active_storage_blobs, class_name: 'ActiveStorage::Blob'

Sébastien Gaya's avatar
Sébastien Gaya committed
  validates_presence_of :name
  validates :sms_sender_name, presence: true, length: { maximum: 11 }

Sébastien Gaya's avatar
Sébastien Gaya committed
  after_destroy :destroy_remaining_blobs

Sébastien Gaya's avatar
Sébastien Gaya committed
  scope :ordered, -> { order(:name) }

Arnaud Levy's avatar
Arnaud Levy committed
  def to_s
    "#{name}"
  end
Sébastien Gaya's avatar
Sébastien Gaya committed

  def mail_from
    address = mail_from_address.blank? ? ENV['MAIL_FROM_DEFAULT_ADDRESS'] : mail_from_address
    name = mail_from_name.blank? ? ENV['MAIL_FROM_DEFAULT_NAME'] : mail_from_name
    {
      address: address,
      name: name,
      full: "#{name} <#{address}>"
    }
  end
Sébastien Gaya's avatar
Sébastien Gaya committed

  private

  def destroy_remaining_blobs
    active_storage_blobs.delete_all
  end
Arnaud Levy's avatar
Arnaud Levy committed
end