Я хотел бы поподробнее остановиться на этой задаче, потому что у неё есть несколько решений. Мы с Виталием общались на эту тему, но общего знаменателя у решений нет. Потому что, как и в любом практически применимом решении, есть плюсы и минусы у каждого из них.

Итак, ДАНО:

Есть вопросы, у них есть ответы. Для каждого вопроса может существовать только один "лучший" ответ. Лучший ответ должен отрисовываться сразу после вопроса вне зависимости от хронологии поступления ответов.

Решение:

Очевидно, что между вопросом и ответом есть связь

class Question < ApplicationRecord
	has_many :answers
end
class Answer < ApplicationRecord
	belongs_to :question
end

Больше всего нас интересуют решения следующих бизнес-задач:

  1. Выборка ответов для отрисовки на странице вопроса
  2. отрисовка списка ответов на странице вопроса
  3. помечание ответа лучшим

Решение 1.

Характеристика "лучший" - это свойство Ответа. Оно имеет булеву природу, либо ответ лучший, либо - нет. Пока ответ не выбран лучшим, он по умолчанию "не лучший". Отсюда следует, что нам нужно добавить колонку с таким свойством в базу в таблицу ответов.

Задача с выборкой на странице вопроса чудесным образом решается order'ом. При этом самым натуральным образом, лучший ответ будет первым

class Answer < ApplicationRecord
	belongs_to :question
	scope :sort_by_best, -> { order(best: :desc) }
end
class QuestionsController < ApplicationController
	def show
		@answers = @question.answers.sort_by_best
	end
end

Задача с отрисовкой. Нам нужно отметить вопрос лучшим, если он является лучшим, тут тоже все предельно просто, но если у лучшего будет отдельный паршл, то либо их нужно будет вместе интегрировать, либо на каждом шаге спрашивать, является ли этот ответ лучшим.

- @answers.each do |answer|
	= "Best" if answer.best

Задача с помечанием ответа лучшим, пожалуй самая сложная во всей этой истории. Поскольку у нас к моменту пометки ответа лучшим уже может быть выбран другой лучший ответ, то нам нужно то действие отменить, а это применить. Часто можно увидеть, что сначала находят какой конкретно ответ был до этого помечен правильным, но этого вовсе не обязательно делать