|
- # == Schema Information
- #
- # Table name: sites
- #
- # id :integer not null, primary key
- # name :string(255)
- # url :string(255)
- # key :string(255)
- # site_type :integer
- # created_at :datetime not null
- # updated_at :datetime not null
- #
-
- class Site < ApplicationRecord
- # add: 添加类链接
- # personal: 个人名下类链接,
- # common: 普通链接
- enum site_type: { add: 0, personal: 1, common: 2, competition: 3 }
-
- scope :by_search, -> (keyword){ where("name LIKE :keyword OR url LIKE :keyword", keyword: "%#{strip_param(keyword)}%") unless strip_param(keyword).blank? }
- scope :by_site_type, -> (site_type){ where(site_type: strip_param(site_type)) unless strip_param(site_type).blank? }
-
- def self.set_default_menu
- set_add_menu!
- set_personal_menu!
- set_common_menu!
- end
-
- def self.has_notice_menu?
- self.common.where(key: 'notice').present?
- end
-
- def self.has_blockchain?
- self.common.where(key: 'blockchain').present?
- end
-
- private
- def self.set_add_menu!
- adds= [
- {name: '新建项目', key: 'add_mirror_project', url: '/projects/mirror/new'},
- {name: '导入项目', key: 'add_common', url: '/projects/deposit/new'},
- {name: '新建组织', key: 'add_r', url: '/organize/new'}]
-
- adds.each { |ele|
- Site.find_or_create_by(key: ele[:key]) do |site|
- site.name = ele[:name]
- site.url = ele[:url]
- site.site_type = Site.site_types[:add]
- end
- }
- end
-
- def self.set_personal_menu!
- personals = [
- {name: '个人中心', key: 'my_page', url: '/users/current_user'},
- {name: '我的组织', key: 'my_organizes', url: '/users/current_user/organizes'}
- ]
-
- personals.each { |ele|
- Site.find_or_create_by(key: ele[:key]) do |site|
- site.name = ele[:name]
- site.url = ele[:url]
- site.site_type = Site.site_types[:personal]
- end
- }
- end
-
- def self.set_common_menu!
- commons = [
- {name: '通知', key: 'notice', url: '/users/current_user/user_messages'},
- {name: '找回密码', key: 'lost_password', url: '/account/lost_password'},
- {name: '注册', key: 'register', url: '/register'}
- ]
-
- commons.each { |ele|
- Site.find_or_create_by(key: ele[:key]) do |site|
- site.name = ele[:name]
- site.url = ele[:url]
- site.site_type = Site.site_types[:common]
- end
- }
- end
- end
|