forgeplus/app/models/user_cla.rb

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