私は現在次のコードを持っています:
events.detect do |event|
#detect does the block until the statement goes false
self.event_status(event) == "no status"
end
これは、event_statusメソッドが「ステータスなし」を出力するときに、イベントのインスタンス(イベントはすべて集合的にイベントを呼び出すさまざまなモデルの文字列)を出力します。
出力に遅延の値も含めるようにします。ここで、
delay = delay + contact.event_delay(event)
event_delayメソッドは記述されていませんが、イベントが実行されてから実行されることになっているときまでの遅延を調べるという点で、event_statusに似ています(冗長かもしれませんが、後で扱います)。
参照用にevent_statusが現在どのように見えるかを次に示します。
def event_status target
# check Ticket #78 for source
target_class= target.class.name
target_id = target_class.foreign_key.to_sym
assoc_name = "contact_#{target_class.tableize}"
r = send(assoc_name).send("find_by_#{target_id}", target.id)
return "no status" unless r
"sent (#{r.date_sent.to_s(:long)})"
end
私の出力の概念は[event、delay]である必要があります。これにより、たとえば、Array [:event]またはArray [:delay]としてアクセスして、値を取得できます。
****メソッドでyieldを使用する必要があるかもしれないと思っていましたが、それらを完全にまとめていません(たとえば、メソッドに渡されるブロックがdelay = +である場合、そうだと思います)。**
私は.detectメソッドに慣れていません。それは私が始めたものであり、機能しているように見えますが、それと一緒に集計を実行することはできません。