Skip to content

1つのQ&Aに対して複数のベストアンサーが登録される #9038

@ryufuta

Description

@ryufuta

概要

1つのQ&Aに対してベストアンサーは0または1つの想定だが、現状ではモデルにもDBにもユニーク制約がないため2つ以上のベストアンサーが登録され得る。

再現手順

通常のユーザーの操作ではごく稀にしか発生しないバグと推定される。
(Q&A作成者が複数の端末でQ&Aにアクセスしている状態で、異なる回答の「ベストアンサーにする」ボタンを同時にクリックするなど)

以下、開発環境で再現させる。

  1. foreman start -f Procfile.devでローカルサーバーを起動
  2. hajime(任意のユーザーで可)でログイン
  3. 解決済みの質問 にアクセス(既にベストアンサーが1つ選択されて解決済みの状態)
  4. bin/rails cでRailsコンソールを起動して以下を実行
    1. kimura = User.find_by(login_name: 'kimura')
    2. question = Question.find(782854533)
    3. question.create_correct_answer!(description: '2番目の正解回答です。', user_id: kimura.id) CorrectAnswer.create!(question: question, user: kimura, description: '2番目の正解回答です。')
  5. 解決済みの質問 に再度アクセスすると、ベストアンサーが2つ選択されている
    *条件は不明だが、1つ目のベストアンサーの回答が非表示になり後から登録したベストアンサーのみ表示されるケースもある

期待される振る舞い

1つのQ&Aに対してベストアンサーはDB上でもUI上でも0または1つの状態になっている。
解決済みのQ&Aに対しては(一度ベストアンサーを取り消さない限りは)新たなベストアンサーを登録できない。

スクリーンショット

Image

環境

  • OS: macOS
  • ブラウザ: chrome

関連PR

Ref: #9024

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

完成

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions