# == 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