2011-10-24 19 views
0

私は多くの参加者を持つ会議モデルを持っています。各参加者は、会議に対していくつかの措置を講じることができます(登録、承諾、辞退など)。会議のステータス(保留、確認済みなど)は、各参加者の最新のアクションとその属性(期限切れ日付など)によって異なります。デザインパターン:Railsの子状態からの親の集約状態

たとえば、すべての参加者が承諾すると、会議のステータスは「確認済み」になります。しかし、会合が確認された後で、ある参加者が(時間競合のために)新しい時間を提案した場合、会議は現在「保留中」になります。

どのように会議の状態をモデル化する必要がありますか?現在の状態をシリアル化(イベントテーブルのlatest_state列を作成)する必要がありますか?もしそうなら、私はどのように子オブジェクトのアクションに基づいてステートマシンを使用できますか?

ありがとうございます。

+0

中に変更された場合

class Participant < ActiveRecord::Base belongs_to :meeting after_update :update_meeting_after_change def update_meeting_after_change self.meeting.update_status if self.status_changed? end end class Meeting < ActiveRecord::Base has_many :participants def update_status #logic here end end 

self.status_changed?trueを返します、わかりません。会議のステータスは、参加者のそれぞれの最新のアクションにのみ依存しますか? 「行動」には何が含まれますか? –

+0

たとえば、すべての参加者が同意すると、会議のステータスが確認されます。ただし、確認後、ある参加者が(時間の競合のために)新しい時間を提案した場合、会議は保留中です。等々。 – AdamNYC

答えて

0

おそらく最善の解決策は、参加者のモデルが更新されたときに会議のステータスの更新をトリガするようになります:Participant年代status属性は申し訳ありませんが、更新

関連する問題