add: invite code
This commit is contained in:
parent
5ef9549b6b
commit
d4b8b3e24f
|
@ -14,7 +14,8 @@ class AppliedProject < ApplicationRecord
|
|||
belongs_to :project
|
||||
|
||||
has_many :applied_messages, as: :applied, dependent: :destroy
|
||||
has_many :forge_activities, as: :forge_act, dependent: :destroy
|
||||
# has_many :forge_activities, as: :forge_act, dependent: :destroy
|
||||
|
||||
enum status: {canceled: -1, common: 0, accepted: 1, refused: 2} # -1 已取消 0 待操作 1 已接收 2 已拒绝
|
||||
|
||||
scope :pending, -> { where(status: 0) }
|
||||
end
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
module Dcodes
|
||||
DCODES = %W(1 2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
|
||||
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def generate_dcode(field, num, pre='')
|
||||
code = DCODES.sample(num).join
|
||||
while self.class.exists?("#{field}": pre+code) do
|
||||
code = DCODES.sample(num).join
|
||||
end
|
||||
code
|
||||
end
|
||||
end
|
|
@ -66,6 +66,7 @@ class Project < ApplicationRecord
|
|||
include Publicable
|
||||
include Watchable
|
||||
include ProjectOperable
|
||||
include Dcodes
|
||||
|
||||
# common:开源托管项目
|
||||
# mirror:普通镜像项目,没有定时同步功能
|
||||
|
@ -105,7 +106,7 @@ class Project < ApplicationRecord
|
|||
has_many :pinned_projects, dependent: :destroy
|
||||
has_many :has_pinned_users, through: :pinned_projects, source: :user
|
||||
|
||||
after_save :check_project_members, :reset_cache_data
|
||||
after_save :check_project_members, :reset_cache_data, :set_invite_code
|
||||
after_destroy :reset_cache_data
|
||||
scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)}
|
||||
scope :no_anomory_projects, -> {where("projects.user_id is not null and projects.user_id != ?", 2)}
|
||||
|
@ -123,6 +124,12 @@ class Project < ApplicationRecord
|
|||
self.reset_user_cache_async_job(self.owner)
|
||||
end
|
||||
|
||||
def set_invite_code
|
||||
if self.invite_code.nil?
|
||||
self.update(invite_code: self.generate_dcode('invite_code', 6))
|
||||
end
|
||||
end
|
||||
|
||||
def self.search_project(search)
|
||||
ransack(name_or_identifier_cont: search)
|
||||
end
|
||||
|
|
|
@ -7,6 +7,7 @@ else
|
|||
json.readme @result[:readme].merge(content: readme_render_decode64_content(@result[:readme]["content"], nil))
|
||||
end
|
||||
json.identifier render_identifier(@project)
|
||||
json.invite_code @project.invite_code
|
||||
json.name @project.name
|
||||
json.description @project.description
|
||||
json.project_id @project.id
|
||||
|
|
Loading…
Reference in New Issue