사용자 속성

안녕하세요,

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

원하시는 작업을 수행할 수 있을 것 같습니다.