Как придерживаться REST? - PullRequest
1 голос
/ 15 июня 2011

Я в основном собираю приложение, которое выполняет очень простой тест на вопрос => ответ в попытке узнать больше о рельсах.

, а именно: Вопрос: "Как зовут вашу собаку?" Ответ: «Доггингтон»

У меня есть модель Вопроса с двумя простыми атрибутами: Вопрос: строка correct_answer: строка

Моя борьба здесь заключается в том, как применить к этому принципы REST - в частности, когда я проверяю ввод (ответ) пользователя, чтобы узнать, правильно ли он понял вопрос.

Я не уверен, стоит ли мне что-то делать, например, изменить метод "show" (или любое другое действие), чтобы принимать значения для ответа, отправленного на него ... и это выглядит так, будто я должен создать новый метод в моем questions_controller называется "verify_answer" или что-то длинное эти строки.

Это ломает ОТДЫХ.

Что вы думаете?

спасибо!

1 Ответ

5 голосов
/ 15 июня 2011

AnswersController#create должны принять ответы.Независимо от того, имеет ли этот контроллер соответствующую модель ответа, не имеет значения.Одно действие должно никогда выполнять два действия.Например, если ваш QuestionsController#show отображает вопрос, и принимают :put или :post с ответом на вопрос, то вы нарушаете основные принципы проектирования рельсов.

Обратите внимание, что ваш файл маршрутов может очень хорошо выглядеть следующим образом:

resources :questions do
  resource :answer
end

, который откроет маршрут / questions / 8 / answer, который вы можете: отправлять на, который перейдет к AnswersController#create.

Внизу головы я забыл точное название метода URL-адреса помощника, который вы можете использовать для генерации URL-адреса.Что-то вроде question_answer_path (@my_question).

Этот файл маршрутизации предназначен для rails3, который, как я полагаю, используется вами, поскольку, по моему мнению, нет никаких оснований использовать что-либо еще, если вы запускаете новое приложение:p

Если у вас есть модель Answer (возможно, вы хотите сохранить ответы пользователей и просмотреть их позже или объединить их и получить статистику и т. д.), то вам следует изменить маршрутизатор на использование resources :answer вместо единственной версии.

Для получения дополнительной информации о маршрутизации и некоторых советах по RESTful вы должны посетить руководство по Ruby on Rails для маршрутизации, найденное здесь: http://guides.rubyonrails.org/routing.html

Я нахожусь наредактирование веселья!Есть моменты, когда вам может понадобиться добавить дополнительный метод к вашему контроллеру вопросов, который не является строго REST.Это не обязательно считается плохой практикой, но просто убедитесь, что вы смотрите на свои решения и выясняете, действительно ли вы просто скрываете существование другого ресурса.Я не считаю это одним из тех случаев, как объяснено выше:)

...