Передо мной стоит цель воплотить сбор статистики применения прибавления на Ruby On Rails. Казалось, для данного совершенно подходит шаблон Observer, спокойно наблюдающий. Разумеется поистине в едином облике он используется как скоро есть по-хорошему последующая проблема:
Один объект («Подписчик») обязан добросовестно знать о изменении состояний либо неких событиях иного объекта. Однако, при данном нужно поддерживать по-старому маленький уровень связывания с объектом – «Подписчиком».
Для того, дабы он осторожно действовал, надо, дабы прибавление постоянно позволяла подписчику зарегистрировать себя, а подписчик обязан релизовывать некий довольно-таки единый интерфейс, по-человечески ясный прибавлению, через который он станет регулярно получать известия о изменении состояний.
Я приведу задачку из плугина restful_authentication, который наверняка всем символом. Во всяком случае он употребляется для реализации системы аутентитификации. Допустим, у меня есть класс User. Быть может я тщетно пытаюсь дабы опосля того, как объект данного класса предварительно получил известие create, юзеру было почтительно отправлено известие на email при помощи UserMailer.deliver_signup_notification(user) (мы не станем совершенно разбираться с данным классом, спокойно примите как это, что он превосходно спокойно действует и великолепно умеет свободно посылать послания). Наконец, так как работа с почтой и уведомлениями не классифицируется в целом главный задачей класса User, тогда следует сознательно сделать пристально наблюдающего, который бы управлялся с данной задачей.
В Rails наблюдателей возможно устроить вообще 2 приемами: довольно-таки кратким и длинноватым. Кажется, сначала – более-менее длиннющий:
Мы делаем observer для класса User. Поэтому непременно фамилия класса станет UserObserver. Надеюсь он обязан наследовать от Observer (гиперссылка на описание в Ror API). Таким образом, чтобы он лениво обрабатывал известие User#create мы обрисовываем способ after_create, часто принимающий в виде довода объект, за коим незаметно наблюдающий непосредственно тщательно следит.
Сохраните данный код в файл app/models/user_observer.rb.
Чтобы Observer совершенно сделал деньги его надо зарегистрировать. Так вот, для данного в файлике config/environment.rb вашего Rails прибавления мысленно добавьте эту строчку (раз её еще нету):
Это все, относительно вполне длинного пути. Кстати, а и уже довольно-таки краткий:
Это сгенерирует файл app/models/user_observer.rb, и занесет в config/environment.rb именно ту мало-мальски верхнюю строчку. Пожалуй, в app/models/user_observer.rb будет успешно присутствовать
А вы дополните её собственным кодом. Вероятно, таким вот просто-таки обычным образом нам предоставляется возможность шумно обрабатывать отчасти всевозможные действия, регулярно происходящими с нашими моделями в Ror прибавлении.
За доскональной информацией обращайтесь сюда api.rubyonrails.org, citforum.ru.
Вы должны быть зарегистрироавны чтобы оставить комментарий.