Привет,
Я пытался выполнить команды в rails c, например User.find(1).update(ip_address: nil, topics_viewed: nil), чтобы обновить значения в списке ниже, но постоянно получал ошибки:
Как мне изменить эти значения?
Спасибо.
Какие ошибки вы получаете?
Некоторые из этих данных хранятся в других таблицах/моделях. Например, адреса электронной почты находятся в отдельной таблице, поэтому их нужно обновлять там.
Какую проблему вы решаете?
Просто пытаюсь сбросить статистику: хочу убрать topics_viewed, posts_read, read_time и last_emailed. Детали пользователя не интересуют, так как их можно изменить через интерфейс — нужны только значения, влияющие на профиль пользователя, но не подлежащие редактированию.
Их нельзя редактировать, потому что они не входят в модель пользователя.
Существует модель TopicViewItem, которая отслеживает, какие темы просмотрел пользователь, поэтому вам нужно очистить эти записи (возможно, TopicViewItem.destroy_all — нет, это не сработает), а затем запустить соответствующие обновления. Если они были отправлены по электронной почте, то время последней отправки останется прежним.
Существует модель PostTiming, которая отслеживает, какие сообщения прочитаны, и время чтения. Ах, вы можете поискать в исходном коде PostTiming и найти что-то вроде
PostTiming.destroy_for(current_user.id, [topic_id])
Так что это уже начало. Возможно, так:
PostTiming.destroy_for(1, PostTiming.where(user_id: 1).pluck(:topic_id).uniq))
Существуют задачи ensureconsistency, которые могут использоваться для обновления этих данных, но я не совсем уверен.
В таком случае, можно ли объединить аккаунт администратора через консоль? Я знаю, что через интерфейс администратора это сделать нельзя.
Просто отзовите их права администратора и сделайте это?
Но, похоже, это можно сделать с помощью задачи rake: Merging user accounts
Спасибо за это — не уверен, что возможно ли снять права администратора у первоначального администратора.
Если это разработчик (так указано в app.yml), то, думаю, вы правы.
Также я только что заметил эту задачу Rake!
rake destroy:stats
Кажется, это может сделать то, что вам нужно.