続の状態欄に遷移を用いrubyist-aasm(行為としてのマシン)
-
22-08-2019 - |
質問
には、どうするのがベストな持続オブジェクトの状態のデータベースへの移行をaasm?と思っていたのですがこのような出来事が起きないようにと自動的にこのように見えません。
(編集:私は手動で保存のオブジェクトの状態欄せを更新しました。で保存しないでの推移です。)
において多くの有益な書類はこのプラグインできるご提案のための代替有限状態機械の実施により良い書類があることが可能となっており、。
解決
、状態が持続します。たとえば、あなたは以下のイベントを持つオブジェクトがあるとします:
class Book < ActiveRecord::Base
# ...
aasm_event :close do
transitions :to => :closed, :from => [:opened]
end
# ...
end
の呼び出しbook.close
はclosed
する状態を設定しますが、自動的に保存されません。 book.close!
を呼び出すと*状態を設定し、*自動的にARオブジェクトを保存します。
他のヒント
、AASMはあなたのために変更を保持します。何マルクスが言った逸品の最新バージョンはバグを持っているという事実を除いて、正しくないフラットアウトです。
のlib /持続/ active_record_persistence.rbのライン180上で(あなたが宝石実行することにより、これを取得することができます:解凍)を、あなたが述べたコメントを参照してくださいする必要があります:
は、状態列に状態を書き込み、データベースにそれを持続します (検証をバイパスする)update_attributeを使用して
ただし、コードで、それは実際に代わりに保存呼び出します!
unless self.save
基礎となるモデルが検証に失敗したときに保存する方法は、デフォルトで検証をバイパスしていないため、バグが発生します。クイックフィックスは、代わりにこれを行うには、次のようになります。
unless self.save(false)
さて、遷移が実際にデータベースに新しい状態を保存します。
私はAASM、移行後のオブジェクトの状態を持続します信じています。ラインAASMで180から189を参照してください/ libに/永続化/ active_record_persistence.rb
やろうと思い立ったら、そのときの保存への移行が影響しています。ActiveRecordをaasmであるのかなぜ記録によるデザイン。
を行うことができる節約に コールバック したい場合(そうだ。)。