|
- # == Schema Information
- #
- # Table name: laboratories
- #
- # id :integer not null, primary key
- # school_id :integer
- # identifier :string(255)
- # created_at :datetime not null
- # updated_at :datetime not null
- # sync_course :boolean default("0")
- # sync_subject :boolean default("0")
- # sync_shixun :boolean default("0")
- #
- # Indexes
- #
- # index_laboratories_on_identifier (identifier) UNIQUE
- # index_laboratories_on_school_id (school_id)
- #
-
- class Laboratory < ApplicationRecord
- belongs_to :school, optional: true
-
- has_many :laboratory_users, dependent: :destroy
- has_many :users, through: :laboratory_users, source: :user
-
- has_one :laboratory_setting, dependent: :destroy
-
- has_many :portal_images, dependent: :destroy
-
- has_many :laboratory_shixuns, dependent: :destroy
- # has_many :shixuns, through: :laboratory_shixuns, source: :shixun
-
- has_many :laboratory_subjects, dependent: :destroy
- # has_many :subjects, through: :laboratory_subjects, source: :subject
-
- has_many :courses, dependent: :destroy
- has_many :competitions, dependent: :destroy
- has_many :libraries, dependent: :destroy
-
- validates :identifier, uniqueness: { case_sensitive: false }, allow_nil: true
-
- delegate :name, :navbar, :footer, :login_logo_url, :nav_logo_url, :tab_logo_url, :default_navbar, to: :laboratory_setting
-
- def site
- rails_env = EduSetting.get('rails_env')
- suffix = rails_env && rails_env != 'production' ? ".#{rails_env}.gitlink.org.cn" : '.gitlink.org.cn'
-
- identifier ? "#{identifier}#{suffix}" : ''
- end
-
- def self.find_by_subdomain(subdomain)
- return if subdomain.blank?
-
- rails_env = EduSetting.get('rails_env')
- subdomain = subdomain.slice(0, subdomain.size - rails_env.size - 1) if rails_env && subdomain.end_with?(rails_env) # winse.dev => winse
-
- find_by_identifier(subdomain)
- end
-
- # def self.current=(laboratory)
- # Thread.current[:current_laboratory] = laboratory
- # end
- #
- # def self.current
- # Thread.current[:current_laboratory] ||= Laboratory.find(1)
- # end
-
- def self.current=(user)
- RequestStore.store[:current_laboratory] = user
- end
-
- def self.current
- RequestStore.store[:current_laboratory] ||= User.anonymous
- end
-
- # 是否为主站
- def main_site?
- id == 1
- end
- end
|