前文
Railsでカードゲームサーバーを開発しています。PendingAction
アプリケーションは、モデルのインスタンスのツリーを介してプレーヤーが実行することが期待されることを記録します。
class Player < ActiveRecord::Base
has_many :cards
has_many :pending_actions
end
いつでも、プレイヤーは任意の葉に作用する必要PendingAction
があります-たとえば、複数ある場合があります。
1. End turn
|
+- 2. Do thing A
| |
| + 3. Do thing pre-A
|
+- 4. Do thing B
|
+ 5. Do thing pre-B
ビューコードは、プレーヤーに1つ以上のフォームを提示し、リーフアクションごとに選択を要求します。たとえば、上記の場合、アクション3および5の入力を求めるフォームが表示されます。
プレイヤーがたとえばアクション5を選択すると、そのアクションは破棄されます。ただし、選択を処理すると、親(アクション4)が発生する前に、別の選択を行う必要が生じる場合があります。そのようです:
1. End turn
|
+- 2. Do thing A
| |
| + 3. Do thing pre-A
|
+- 4. Do thing B
|
+ 6. Do other thing pre-B
したがって、アクション4は手元にある必要があるため、アクション6をその子として作成できます。現在、関数の引数としてアクション4を渡しています。ただし、オブジェクトのbefore_save
フックでアクセスできるようにすると本当に役立つ状況に遭遇したばかりです。Card
質問
に関連付けられたオブジェクトを保存するのに最適な場所はどこですか。これは、それPlayer
に関連するすべてのモデルからアクセスできますPlayer
。これは、単一のHTTPリクエスト全体で有効ですが、それを超えることはできません。
私はHerokuの下で、1つのdynoを使用して実行しているので、シングルスレッドだと思います。