Я думаю, что способ, которым я смоделировал мое приложение, немного сомнительный, и мне нужно изменить настройки, я просто не уверен, как. Я уже перенастроил и рефакторинг раньше. Это заняло много времени (я новичок), и я снова не решаюсь, если я снова ухожу в неправильном направлении.
Основная идея, пользователь может отправить ответ , другой пользователь может пометить его как правильный или неправильный . Если они неправильные, они должны написать правильный ответ. Пользователи могут просматривать свои и все остальные правильные и неправильные ответы.
Так я и сделал
class Answer
has_one: correction
end
class Correction
belongs_to :answer
end
когда пользователь помечает ответ как правильный, я установил флажок check_at: DateTime и check_by_id: integer для объекта ответа, чтобы отслеживать, кто и когда проверял ответ.
Для неправильных ответов я создаю корректирующий объект, который содержит правильный ответ, а также данные check_by и check_at.
Мне это не нравится, потому что у меня есть check_by и check_at в обеих моделях. Это просто не правильно сидит.
Возможные решения:
Создайте третью модель, такую как VerifiedAnswer, и переместите туда атрибуты checked_by / at. Он будет обрабатывать ситуацию, когда ответ помечен как правильный.
Или эти модели достаточно тонкие (у них нет никаких других атрибутов), чтобы я мог иметь только одну модель (Ответ), которая имеет все атрибуты для хранения всей этой информации?