Sha256: b653ad19bff119dab700276fa539deff3a9dac8badaf6d49ff79d04a1c517999

Contents?: true

Size: 1.49 KB

Versions: 12

Compression:

Stored size: 1.49 KB

Contents

##
# Post Reporting Structure 是岗位汇报结构。

class Unidom::Position::PostReportingStructure < Unidom::Position::ApplicationRecord

  self.table_name = 'unidom_post_reporting_structures'

  include Unidom::Common::Concerns::ModelExtension

  belongs_to :superior_post, class_name: 'Unidom::Position::Post', foreign_key: :superior_post_id
  belongs_to :inferior_post, class_name: 'Unidom::Position::Post', foreign_key: :inferior_post_id

  scope :superior_post_is, ->(superior_post) { where superior_post_id: to_id(superior_post) }
  scope :inferior_post_is, ->(inferior_post) { where inferior_post_id: to_id(inferior_post) }

  ##
  # 建立岗位间的上下级汇报关系。上级岗位是 superior_post ,下级岗位是 inferior_post 。
  # 主要汇报标志是 elemental ,缺省为 true 。建立时间是 opened_at ,缺省为当前时间。如:
  # Unidom::Position::PostReportingStructure.report! superior_post: superior_post, inferior_post: inferior_post
  def self.report!(superior_post: nil, inferior_post: nil, elemental: true, opened_at: Time.now)
    raise ArgumentError.new('The superior_post argument is required.') if superior_post.blank?
    raise ArgumentError.new('The inferior_post argument is required.') if inferior_post.blank?
    self.inferior_post_is(inferior_post).superior_post_is(superior_post).valid_at.alive.first_or_create! elemental: elemental, opened_at: opened_at
  end

end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Position::PostReportingStructure'

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
unidom-position-2.0 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.9 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.8 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.7 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.6 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.5 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.4 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.3 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.2 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5.1 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.5 app/models/unidom/position/post_reporting_structure.rb
unidom-position-1.4.5 app/models/unidom/position/post_reporting_structure.rb