Атрибуты пользователя

Привет,

Я пытался выполнить команды в 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

Кажется, это может сделать то, что вам нужно.