Sha256: 8818da13c5c8b11e85fec2c0920dda79d502077e03c6a290cac3d950a2756620

Contents?: true

Size: 1.19 KB

Versions: 19

Compression:

Stored size: 1.19 KB

Contents

# State Transition 是状态迁移。
# #reason 是原因。
# #subject 是状态的主体。

class Unidom::Action::StateTransition < Unidom::Action::ApplicationRecord

  self.table_name = 'unidom_state_transitions'

  include Unidom::Common::Concerns::ModelExtension

  belongs_to :transitor_visitor, polymorphic: true
  belongs_to :transitor_party,   polymorphic: true
  belongs_to :subject,           polymorphic: true
  belongs_to :reason,            class_name:  'Unidom::Action::Reason'

  scope :transited_via, ->(transitor_visitor) { where transitor_visitor: transitor_visitor }
  scope :transited_by,  ->(transitor_party)   { where transitor_party:   transitor_party   }
  scope :subject_is,    ->(subject)           { where subject:           subject           }
  scope :caused_by,     ->(reason)            { where reason_id:         to_id(reason)     }

  def self.transit!(subject: nil, from_state: nil, thru_state: nil, transitor_visitor: nil, transitor_party: nil, reason: nil, opened_at: Time.now)
    create! transitor_visitor: transitor_visitor, transitor_party: transitor_party, subject: subject, reason: reason, from_state: from_state, thru_state: thru_state, opened_at: opened_at
  end

end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
unidom-action-1.16 app/models/unidom/action/state_transition.rb
unidom-action-1.15 app/models/unidom/action/state_transition.rb
unidom-action-1.14 app/models/unidom/action/state_transition.rb
unidom-action-1.13 app/models/unidom/action/state_transition.rb
unidom-action-1.12 app/models/unidom/action/state_transition.rb
unidom-action-1.11.1 app/models/unidom/action/state_transition.rb
unidom-action-1.11 app/models/unidom/action/state_transition.rb
unidom-action-1.10 app/models/unidom/action/state_transition.rb
unidom-action-1.9.2 app/models/unidom/action/state_transition.rb
unidom-action-1.9.1 app/models/unidom/action/state_transition.rb
unidom-action-1.9 app/models/unidom/action/state_transition.rb
unidom-action-1.8 app/models/unidom/action/state_transition.rb
unidom-action-1.7 app/models/unidom/action/state_transition.rb
unidom-action-1.6 app/models/unidom/action/state_transition.rb
unidom-action-1.5 app/models/unidom/action/state_transition.rb
unidom-action-1.4 app/models/unidom/action/state_transition.rb
unidom-action-1.3 app/models/unidom/action/state_transition.rb
unidom-action-1.2 app/models/unidom/action/state_transition.rb
unidom-action-1.1 app/models/unidom/action/state_transition.rb