# 진행 중인 투표 수정하기 (데이터 손실 없이)

**URL:** https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986
**Category:** Self-hosting
**Tags:** polls, rails-console
**Created:** [1월 17, 2023, 8:18오전 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986 "2023-01-17T08:18:29Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [1월 17, 2023, 8:18오전 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986/1 "2023-01-17T08:18:29Z")

</div>

사용자가 투표로 시작할 때 다양한 오류를 범하는 경우가 많으며, 이러한 오류는 투표가 상당 부분 진행된 후에야 발견되는 경우가 많습니다.

불행히도 투표에 대한 편집은 투표 데이터를 초기화합니다. 이는 투표의 무결성을 유지하기 위한 것이므로 이해할 수 있지만, 사용자가 겪는 큰 문제를 간단한 조정으로 해결할 수 있을 때 이러한 초기화는 매우 바람직하지 않습니다.

그러나 Rails 콘솔을 통해 이 작업을 수행할 수 있습니다. 진행 중인 투표를 해킹하면 데이터는 보존되면서 투표의 동작 방식이 변경됩니다. 다만 마크다운은 수정되지 않습니다. 게시물을 다시 생성(rebake)할 때 어떤 일이 일어나는지는 확실하지 않지만, 투표가 원래의 동작 방식으로 되돌아갈 것으로 추정됩니다. 그때쯤이면 투표는 이미 오래되었고 잊혀졌을 가능성이 높으므로 큰 문제가 되지 않습니다.

핵심은 게시물의 ID를 찾는 것입니다. 이를 쉽게 찾는 방법은 다음 SQL 쿼리를 사용하는 것입니다(관심 있는 투표는 상단에 가까울 것입니다):

```sql
SELECT post_id as postid, *
FROM polls
ORDER BY id desc

```

사용자가 실수로 다중 선택이 아닌 단일 선택 투표로 만든 경우를 위한 투표 해킹 예시는 다음과 같습니다:

```ruby
Poll.find_by_post_id(75571).update(type:1,min:1,max:4)

```

이 쿼리와 시작 지점을 바탕으로 다른 해킹 방법도 조합해 볼 수 있을 것입니다.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [1월 17, 2023, 8:24오전 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986/2 "2023-01-17T08:24:58Z")

</div>

이 내용은 ‘레일스에서 UI를 우회하는 것’ 범주에 해당하므로(이전에 이메일 관련 내용과 유사하게), 승인된 가이드로 두기보다는 #installation 채널로 옮겼습니다.

이런 종류의 팁은 유용하지만 '사용자 책임’이라는 요소가 포함되어 있으므로, 이들을 위한 어떤 형태의 중간 단계 공간이 필요할 것 같습니다. 현재 의견들을 다시 확인해 보겠습니다. 👍

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [1월 17, 2023, 10:31오전 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986/3 "2023-01-17T10:31:58Z")

</div>

아마도 `#unofficial-tip` 또는 `#dig-your-own-grave` 같은 태그를 하나 더 추가하면 도움이 될 것 같습니다. 그러면 카테고리들이 주제에 더 부합하게 될 수 있지만, 특정 지식이 필요하다는 점과 실패할 위험이 크다는 점을 알려주는 지표도 함께 제공될 것입니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [1월 17, 2023, 10:37오전 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986/4 "2023-01-17T10:37:49Z")

</div>

좋은 팁이네요.

보통 저는 토픽을 만들어 설문지 초안 개요를 작성하고, 시니어 멤버들에게 개선 사항이나 누락된 옵션을 제안하도록 초대합니다.

그 다음 설문을 진행합니다.

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [1월 17, 2023, 11:49오전 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986/5 "2023-01-17T11:49:26Z")

</div>

> [@merefield](#):
>
> 저는 보통 주제를 만들어서 설문 조사 초안 개요를 작성하고, 고위 멤버들에게 개선 사항이나 누락된 옵션을 제안하도록 초대합니다.
> 
> 그 다음에 설문을 실행합니다.

네, 저도 그렇게 합니다. 특히 매우 중요한 설문 조사의 경우 그렇습니다.

하지만 동시에 사용자들도 스스로 독립적으로 이를 수행하도록 장려하고 싶고, 이는 그들이 배우면서 필연적으로 실수를 하게 될 때 그들을 지원하는 것을 의미합니다.

---

<div class="post-metadata">

### Author: ![Zanbabe](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zanbabe/32/300386_2.png) [@Zanbabe](https://meta.discourse.org/u/Zanbabe)
#### Post date: [10월 8, 2024, 10:05오후 UTC](https://meta.discourse.org/t/how-to-change-a-poll-while-it-is-live-without-losing-the-data/251986/6 "2024-10-08T22:05:02Z")

</div>

왜 UI에서 이 문제를 그냥 해결할 수 없을까요? 투표 무결성, 그거 그거. 보통 오타일 뿐인데, 그대로 두면 신경이 쓰이지만, 표을 초기화하는 것보다는 낫습니다. … 저는 그런 선택을 해야만 하는 상황이 아닙니다.

관리자가 원하면 나중에 수정할 수 있게 하면 안 될까요? 때로는 투표가 그냥 재미를 위한 것일 뿐이고, '무결성’을 유지하는 것이 최우선 순위는 아닙니다. 나중에 편집을 허용해도 전체가 깨져버리기 때문에 그 설정은 사실상 쓸모가 없습니다. 표를 잃지 않고 편집을 허용할 수 있는 설정이 있으면 좋겠습니다… 만약 우리가 사이트를 그렇게 운영하기를 원한다면 말이죠.
