Реализация шаблона Observer для моего приложения Rails

В настоящее время я использую rails 3.0.7 и ruby ​​1.9.2 и создаю приложение rails, которое содержит видео, загружаемое из базы данных во время рендеринга FlowPlayer. и набор слайдов на основе видео. Теперь я хотел синхронизировать слайды с видео. Что касается времени, я прошу пользователя ввести время каждого слайда. Итак, мне было интересно, могу ли я использовать шаблон наблюдателя для этого, сделав что-то вроде центрального времени в качестве субъекта, а видео и слайды в качестве наблюдателей?

Хотя концепция кажется правильной после прохождения ряда руководств в сети, я не могу продолжить или получить идеи по ее кодированию.

Любая помощь будет принята с благодарностью.


person Saagar    schedule 18.06.2011    source источник


Ответы (1)


в основном у вас есть два варианта:

используйте обратные вызовы ActiveRecord (before_save, after_save и т. д.) или создайте наблюдателя

# app/observers/some_model_observer.rb
class SomeModelObserver < ActiveRecord::Observer
  observe :your_model # the model you're observing

  def after_create(record)
  end

  # other ActiveRecord callbacks
end
person Andrea Pavoni    schedule 18.06.2011
comment
Привет, Андреа. Спасибо за совет. По сути, из вашего ответа я понимаю, что мне придется связать свои модели видео и слайдов соответственно в файле наблюдателя, используя наблюдение: «модель». Теперь, чтобы синхронизировать их, я думаю, что каждая секунда должна запускаться как событие, и в соответствии с таймингами слайд меняется, а видео движется вперед. Как связать время и этих наблюдателей. Спасибо за помощь. Извините, если мой вопрос покажется глупым. Я совсем нуб в этом еще. - person Saagar; 18.06.2011
comment
Привет, Саагар, наблюдатели в основном предназначены для событий, связанных с моделью. Я думаю, вы должны использовать какой-нибудь javascript для тайминга и синхронизации (читай: в этом конкретном контексте не используются ruby ​​или rails) - person Andrea Pavoni; 19.06.2011
comment
Привет Андреа. Спасибо, что прояснили это! Значит ли это, что для достижения того, чего я хочу, я должен полностью использовать javascript, и Observer не задействован? Не могли бы вы рассказать немного о событиях, связанных с моделями? - person Saagar; 19.06.2011
comment
события модели см. в этом документе: api.rubyonrails.org/classes/ActiveRecord/Observer. html ;) - person Andrea Pavoni; 19.06.2011
comment
Хорошо! Спасибо за это ... :) ... я наткнулся на этот термин, называемый eventmachine, который представляет собой API для механизма прослушивания событий в ruby. Как вы думаете, это позволит мне достичь того, чего я хочу? Спасибо, что нашли время и терпение!! - person Saagar; 19.06.2011
comment
Я бы использовал eventmachine для вещей, связанных с сервером. лучше всего для вашего контекста использовать JS и/или AJAX. для небольших / нескольких слайдов вы можете загрузить их все, а затем использовать JS для переключения слайдов каждый X раз. - person Andrea Pavoni; 20.06.2011