class ProjectPackages::ApplyPublishService < ApplicationService Error = Class.new(StandardError) attr_reader :package def initialize(package) @package = package end def call return if package.applying? raise Error, '该状态下不能申请发布' unless package.may_apply? ActiveRecord::Base.transaction do package.apply! package.project_package_applies.create! send_project_package_apply_notify! end end private def send_project_package_apply_notify! Tiding.create!(user_id: 1, trigger_user_id: package.creator_id, container_id: package.id, container_type: 'ProjectPackage', tiding_type: 'Apply', status: 0) end end