Sha256: 30b0cc065238d0e125d82b7eb65180a5392707b5c5b72c93709f92f4aef93a46

Contents?: true

Size: 1.33 KB

Versions: 11

Compression:

Stored size: 1.33 KB

Contents

##
# Collaborating 是参与者以特定的角色进行协作。

class Unidom::Party::Collaborating < Unidom::Party::ApplicationRecord

  self.table_name = 'unidom_collaboratings'

  include Unidom::Common::Concerns::ModelExtension

  validates :name, presence: true, length: { in: 2..self.columns_hash['name'].limit }

  belongs_to :collaboration, polymorphic: true
  belongs_to :collaborator,  polymorphic: true

  scope :collaboration_is, ->(collaboration) { where collaboration: collaboration }
  scope :collaborated_by,  ->(collaborator)  { where collaborator:  collaborator  }

  def self.collaborate!(collaboration: nil, collaborator: nil, name: collaborator.try(:name), role_code: nil, priority: 1, grade: 1, description: nil, instruction: nil, opened_at: Time.now)
    query         = collaboration_is(collaboration).collaborated_by(collaborator).role_coded_as(role_code).valid_at(now: opened_at).alive
    attributes    = { name: name, priority: priority, grade: grade, description: description, instruction: instruction }
    collaborating = query.first_or_initialize attributes
    if collaborating.new_record?
      collaborating.opened_at = opened_at
    else
      collaborating.attributes = attributes
    end
    collaborating.save!
    collaborating
  end

end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Party::Collaborating'

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
unidom-party-2.0 app/models/unidom/party/collaborating.rb
unidom-party-1.9.8 app/models/unidom/party/collaborating.rb
unidom-party-1.9.7 app/models/unidom/party/collaborating.rb
unidom-party-1.9.6 app/models/unidom/party/collaborating.rb
unidom-party-1.9.5 app/models/unidom/party/collaborating.rb
unidom-party-1.9.4 app/models/unidom/party/collaborating.rb
unidom-party-1.9.3 app/models/unidom/party/collaborating.rb
unidom-party-1.9.2 app/models/unidom/party/collaborating.rb
unidom-party-1.9.1 app/models/unidom/party/collaborating.rb
unidom-party-1.9 app/models/unidom/party/collaborating.rb
unidom-party-1.8.5 app/models/unidom/party/collaborating.rb