Есть модель User и связанная с ней таблица пользователей. Один из пользователей администратор. Есть куча контроллеров и во многих из них для администратора создается уведомление - запись в специальной таблице.
Сейчас перед тем как отправить администратору уведомление пишется примерно такой код:
admin = User.where(admin: true).first
Notification.create(user_id: admin.id, .......)
Т.е. как собрались отправлять уведомление - выбираем из таблицы администратора и выполняем над ним действия.
Хочу сделать класс Admin, который при старте приложения выберет администратора один раз, а потом обращаться к методу класса этого Admin для получения записи администратора из любого контроллера.
Неудачная попытка:
application_helper.rbmodule ApplicationHelper
class Admin
@@admin = User.where(admin: true).first
if @@admin
puts '::Admin loaded'
else
puts '::Admin absent !!!!!!!!'
end
class << self
def get
@@admin
end
end
end
end
какой нибудь контроллер:
def some action
admin = Admin.get
Notification.create(user_id: admin.id, .......)
end
Возникает ошибка циклической ссылки. Т.е. я так понимаю загрузка кода хелпера стартует до загрузки кода моделей.
Вообще мне не обязательно Admin пихать в хелпер, просто необходимо, чтобы класс Admin инициализировался после User и был доступен в теле контроллеров. Как сделать? помогите пожалуйста
PS как вы поняли я не хочу создавать экземпляр класса Admin а непосредственно обращаться к методу класса