Ребята, у меня есть форум, и я единственный администратор и владелец! Оказалось, что когда я создавал этот сайт, я использовал электронную почту REDACTED. Этот адрес я использовал через cPanel хостинга TMD. Дело в том, что я больше не пользуюсь услугами TMD Hosting и перешёл на DigitalOcean, и даже забыл, что почта моего администратора была именно этой — я её не менял! Теперь я попытался передать права администратора другой своей учётной записи на форуме, но форум требует ввести учётную запись REDACTED и подтвердить, что я хочу передать права администратора. Однако я больше не могу получить доступ к cPanel TMD Hosting, чтобы войти в REDACTED. Что мне делать?
Я связался с TMD хостингом и мне сообщили, что моя электронная почта REDACTED больше не существует, и активировать её можно только при покупке нового сервера. Но что же тогда делать с администратором форума? Вы навсегда останетесь привязаны к этой почте REDACTED? Нет ли возможности изменить её, даже если у меня есть пароль от всего на моём собственном форуме?
root@ForumPandex:/var/discourse# u = User.find_by_username("dex")
-bash: синтаксическая ошибка рядом с неожиданным токеном `('
root@ForumPandex:/var/discourse#
Я использую эту команду, но появляется такая ошибка. Как исправить?
Вам нужно более внимательно следовать руководству. Вы пропустили шаги: Войти в контейнер, а затем Открыть консоль Rails, прежде чем выполнять следующие команды.
Однако я также рекомендую сделать резервную копию вашего сайта, прежде чем углубляться дальше. Пошаговое руководство, конечно, упрощает процесс, но если вы не знакомы с консолью Rails, могут произойти ошибки. Вы же не хотите что-то сломать, не имея под рукой свежей резервной копии.
Я перезагрузил компьютер, и ошибка исчезла! Но теперь появилась другая ошибка на этапе ввода адреса электронной почты: u.email = "REDACTED" выглядит так:
Из вашего описания непонятно, в чём проблема. Убедитесь, что после адреса электронной почты нет пробела в конце. Однако я рекомендую создать нового пользователя-администратора с помощью команды:
rake admin:create
Затем уберите права администратора и модератора у пользователя, адрес которого вы хотите обновить. После этого вы снова сможете назначить этого пользователя администратором.
root@ForumPandex:~# cd /var/discourse
root@ForumPandex:/var/discourse# ./launcher enter app
Архитектура x86_64 обнаружена.
ПРЕДУПРЕЖДЕНИЕ: файл containers/app.yml доступен для чтения всеми. Вы можете защитить этот файл, выполнив: chmod o-rwx containers/app.yml
root@ForumPandex-app:/var/www/discourse# rails c
[1] pry(main)> u = User.find_by_username "=dex="
=> nil
[2] pry(main)> e.email = "EMAIL"
NameError: неопределенная локальная переменная или метод `e' для main:Object
из (pry):2:in `__pry__'
[3] pry(main)> u.email = "EMAIL"
NoMethodError: неопределенный метод `email=' для nil:NilClass
из (pry):3:in `__pry__'
[4] pry(main)> u.email_tokens.create(email: u.email)
NoMethodError: неопределенный метод `email_tokens' для nil:NilClass
из (pry):4:in `__pry__'
[5] pry(main)> u.save!
NoMethodError: неопределенный метод `save!' для nil:NilClass
из (pry):5:in `__pry__'
[6] pry(main)>
Я перенёс ваши сообщения сюда, чтобы вся информация по проблеме была в одном месте, так что людям будет проще вам помочь.
Также хочу отметить, что в запросах о помощи не стоит указывать свой email администратора. Один из наших экспертов сообщества аккуратно удаляет его из ваших сообщений по мере появления, но было бы проще, если бы его там не было.
Похоже, вы разобрались, как попасть в консоль Rails. Но, судя по всему, при вводе имени пользователя вы использовали символы-заполнители =. Имя пользователя нужно вводить без них.
Хотя @pfaffman предложил альтернативный метод, если текущий оказывается слишком сложным:
Если вы создадите второго администратора, это позволит вам снять права администратора с аккаунта, для которого нужно изменить адрес электронной почты, и обойти ограничение безопасности, требующее подтверждения по старому email-адресу. Затем вы сможете изменить email оригинального аккаунта с помощью нового администратора, а после снова вернуть права администратора.
Вы не ввели имя пользователя в пустые поля в теме с кодом, поэтому вместо имени пользователя там стоит текст-заполнитель.
u = User.find_by_username "=dex="
Должно быть:
u = User.find_by_username "dex"
Если «dex» — это имя пользователя, то тот факт, что возвращается nil вместо записи пользователя, указывает на то, что такой записи нет. Поскольку вы не понимаете этих основ, я настоятельно рекомендую создать нового пользователя, как предлагалось ранее. Это позволит вам работать с более привычными инструментами.
В противном случае это просто создавало мне проблемы, поэтому я сделал это, чтобы создать нового админа, и это сработало. С новым админом я удалил старого. Спасибо за всё!