У меня сейчас есть следующий код:
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
Моя концепция вывода должна быть [событие, задержка], чтобы, например, я мог получить доступ к нему как Array [: event] или Array [: delay], чтобы получить значение.
**** Я подумал, что, возможно, мне следует использовать yield для метода, но я не совсем собрал части (если блок, переданный методу, будет, например, с задержкой = +, я думаю, что это так). **
Я не женат на методе .detect, это то, с чего я начал, и, похоже, он работает, но он не позволяет мне вести подсчет рядом с ним.