64 lines
1.7 KiB
Ruby
64 lines
1.7 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: user_clas
|
|
#
|
|
# id :integer not null, primary key
|
|
# user_id :integer not null
|
|
# cla_id :integer not null
|
|
# real_name :string(255) not null
|
|
# email :string(255) not null
|
|
# state :integer default("0")
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# sign_time :datetime
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_user_clas_on_cla_id (cla_id)
|
|
# index_user_clas_on_user_id (user_id)
|
|
#
|
|
|
|
class UserCla < ApplicationRecord
|
|
belongs_to :user
|
|
belongs_to :cla
|
|
# identity 0: 教师教授 1: 学生, 2: 专业人士, 3: 开发者
|
|
enum state: { deafult: 0, signed: 1, failed: 2}
|
|
|
|
after_save do
|
|
cla.fresh_count
|
|
end
|
|
|
|
before_save do
|
|
fresh_pull_request
|
|
end
|
|
|
|
def self.build(params,current_user_id)
|
|
self.create!(user_id: current_user_id,
|
|
cla_id: params[:cla_id],
|
|
real_name: params[:real_name],
|
|
email: params[:email],
|
|
sign_time: Time.now,
|
|
state: 1
|
|
)
|
|
end
|
|
|
|
def update_by_params(params)
|
|
update(\
|
|
state: 1,
|
|
sign_time: Time.now,
|
|
real_name: params[:real_name],
|
|
email: params[:email],
|
|
)
|
|
end
|
|
|
|
def fresh_pull_request
|
|
project_ids = cla.organization.projects.pluck(:id)
|
|
if state == "signed"
|
|
PullRequest.where(user_id: user_id, project_id: project_ids, status:3).update_all(status:0)
|
|
else
|
|
PullRequest.where(user_id: user_id, project_id: project_ids, status:0).update_all(status:3)
|
|
end
|
|
end
|
|
|
|
end
|