Sha256: 580b8573fe636b98d49df42e4df6f758161d914be3d08686a84580cd34dc6605

Contents?: true

Size: 1007 Bytes

Versions: 8

Compression:

Stored size: 1007 Bytes

Contents

# Party Relation 是参与者关系。

class Unidom::Party::PartyRelation < ActiveRecord::Base

  self.table_name = 'unidom_party_relations'

  include Unidom::Common::Concerns::ModelExtension

  validates :grade,    presence: true, numericality: { integer_only: true }
  validates :priority, presence: true, numericality: { integer_only: true }

  belongs_to :source_party, polymorphic: true
  belongs_to :target_party, polymorphic: true

  scope :source_party_is, ->(source_party) { where source_party: source_party }
  scope :target_party_is, ->(target_party) { where target_party: target_party }

  def self.relate!(source_party: nil, target_party: nil, linkage_code: 'FRND', grade: 0, opened_at: Time.now, priority: 0, attributes: {})
    relation = source_party_is(source_party).target_party_is(target_party).linkage_coded_as(linkage_code).first_or_initialize grade: grade, priority: priority, opened_at: opened_at
    relation.assign_attributes attributes
    relation.save!
    relation
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
unidom-party-1.7 app/models/unidom/party/party_relation.rb
unidom-party-1.6 app/models/unidom/party/party_relation.rb
unidom-party-1.5 app/models/unidom/party/party_relation.rb
unidom-party-1.4 app/models/unidom/party/party_relation.rb
unidom-party-1.3 app/models/unidom/party/party_relation.rb
unidom-party-1.2 app/models/unidom/party/party_relation.rb
unidom-party-1.1 app/models/unidom/party/party_relation.rb
unidom-party-1.0.2 app/models/unidom/party/party_relation.rb