Rails - новичкам нужны отзывы о том, как они смоделировали свое приложение и как это сделать лучше - PullRequest
1 голос
/ 03 мая 2010

Я думаю, что способ, которым я смоделировал мое приложение, немного сомнительный, и мне нужно изменить настройки, я просто не уверен, как. Я уже перенастроил и рефакторинг раньше. Это заняло много времени (я новичок), и я снова не решаюсь, если я снова ухожу в неправильном направлении.

Основная идея, пользователь может отправить ответ , другой пользователь может пометить его как правильный или неправильный . Если они неправильные, они должны написать правильный ответ. Пользователи могут просматривать свои и все остальные правильные и неправильные ответы.

Так я и сделал

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. Он будет обрабатывать ситуацию, когда ответ помечен как правильный.

Или эти модели достаточно тонкие (у них нет никаких других атрибутов), чтобы я мог иметь только одну модель (Ответ), которая имеет все атрибуты для хранения всей этой информации?

1 Ответ

1 голос
/ 03 мая 2010

Я бы сделал ответ, исправленный другим ответом. Таким образом, вы можете продолжать исправлять новый ответ.

Это можно сделать, указав:

class Answer
  belongs_to :correction, :class_name => "Answer"
end

Обратите внимание, что это будет означать, что любые существующие ответы с исправлениями будут иметь неверно настроенные данные (поскольку в данный момент поле correction_id указывает на другую таблицу) Вам нужно очистить базу данных, чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...