In Memory로 state machine의 statesman을 사용해 보도록 하겠습니다.
                                            
                                                
                                                
                                                
                                                
                                                
                                                 6171 단어  RailsRubyStateMachinetech
                    
statesman을 사용해 봤어요.
rails에서 state machinestatesman를 원해서 썼어요.
왜냐면ruby toolbox 그럼statemachines의 클래스에 들어가지 않았습니다. 자주 사용하고 유지보수도 지속됩니다.
(ruby 오랜만이에요. 이제 루비 toolbox도 잘 안 쓰죠)
In Memory로 이동
statesman의 특징은 state machine의class와 이전 역사를 저장하는transsitionclass와 모델을 분리해서 제작하는 것이 기본적인 부분이죠.
state machine도 모델에 함부로 자란 것이 아니라 스스로 정의하고 넣은 것이기 때문에 다양한 기능을 함부로 추가하는 것이 아니라 놀라지 않는다.
액티비티 같은 모델이 있다면 state machine로 제작된 반
include Statesman::Machine, 모델에서 제작state_machine 방법으로 거기에 state machine의 실례를 설정하면 먼저 움직인다.class Activity < ApplicationRecord
  def state_machine
    @state_machine ||= ActivityStateMachine.new(self)
  end
end
class ActivityStateMachine
  include Statesman::Machine
  
  state :pending, initial: true
  state :done
  
  transition from: :pending, to: :done
end
state_machine 사용> activity = Activity.new
> activity.state_machine.current_state?
=> "pending"
> activity.state_machine.can_transition_to?(:done)
=> true
> activity.state_machine.transition_to!(:done)
=> true
# 状態遷移が出来ました
> activity.state_machine.current_state
=> "done"
> activity.save
# ここで保存した activity をロードしなおしたとすると
> activity2 = Activity.last
# 状態を確認すると initial state に戻ってしまってます
> activity2.state_machine.current_state
=> "pending"
(기본) RDB 사용 상태 저장
transition class를 만들어 DB에 저장하면 된다.
이런 방법은 README의 방법입니다. 상세한 상황은 참고해 주십시오.
initializers/statesman.rb도Active Record의 어댑터를 설정하고transion class를 만들며migration을 더하면 됩니다.rails g statesman:active_record_transition Activity ActivityTransition
제작된migration 파일은 미묘합니다. id의 관련으로 떨어질 수 있습니다.
rake db:rollback도 index에서 삭제되었기 때문에 add_foreign_key의 위치를 마지막으로 변경했습니다.# これを migration ファイルの最後に置いておくと、まず foreign_key が消えるので、他の add_index も rollback 可能になる
add_foreign_key :activity_transitions, :activities
Reference
이 문제에 관하여(In Memory로 state machine의 statesman을 사용해 보도록 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kakkunpakkun/articles/859ee0b7c9c3522b9e1b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)