Skip to content
Snippets Groups Projects
extranet.rb 1.22 KiB
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
# == Schema Information
#
# Table name: communication_extranets
#
#  id            :uuid             not null, primary key
pabois's avatar
pabois committed
#  about_type    :string           indexed => [about_id]
Arnaud Levy's avatar
Arnaud Levy committed
#  domain        :string
#  name          :string
#  created_at    :datetime         not null
#  updated_at    :datetime         not null
pabois's avatar
pabois committed
#  about_id      :uuid             indexed => [about_type]
Arnaud Levy's avatar
Arnaud Levy committed
#  university_id :uuid             not null, indexed
#
# Indexes
#
pabois's avatar
pabois committed
#  index_communication_extranets_on_about          (about_type,about_id)
Arnaud Levy's avatar
Arnaud Levy committed
#  index_communication_extranets_on_university_id  (university_id)
#
# Foreign Keys
#
#  fk_rails_c2268c7ebd  (university_id => universities.id)
#
class Communication::Extranet < ApplicationRecord
pabois's avatar
pabois committed
  include WithAbouts
Arnaud Levy's avatar
Arnaud Levy committed
  include WithUniversity
Arnaud Levy's avatar
Arnaud Levy committed

  validates_presence_of :name, :domain

Arnaud Levy's avatar
Arnaud Levy committed
  has_one_attached_deletable :logo

pabois's avatar
pabois committed
  scope :ordered, -> { order(:name) }
  scope :for_search_term, -> (term) {
    where("
      unaccent(communication_extranets.domain) ILIKE unaccent(:term) OR
      unaccent(communication_extranets.name) ILIKE unaccent(:term)
    ", term: "%#{sanitize_sql_like(term)}%")
  }

Arnaud Levy's avatar
Arnaud Levy committed
  def self.with_host(host)
    find_by domain: host
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def url
    "https://#{domain}"
  end

  def to_s
    "#{name}"
  end
end