Использовать Модель как Ресурс или нет? - PullRequest
2 голосов
/ 26 октября 2009

Итак, у меня есть Пользователь , Пост и Голосование моделей.

User has_many Vote
Post has_many Vote

В своих модульных тестах я определял метод под названием @post.vote_up, который создает голосование за пост, но затем я начал думать, позволит ли такой интерфейс использовать методологию отдыха.

Если бы мне нужно было позвонить / topic / 1 / голосования с помощью POST, было бы вызвано действие VoteController create .

В этом контроллере было бы неплохо, если бы называть что-то конкретное, например @post.vote_up?

Должен ли я просто создать действие члена в PostController с именем voice_up и забыть использовать Голосование как ресурс?

Спасибо!

1 Ответ

3 голосов
/ 26 октября 2009

В этой ситуации вы всегда должны спросить себя:

Имеет ли это действие смысл вне контекста этого приложения.

Если это так, то он принадлежит модели. В противном случае он принадлежит контроллеру. Голосование за пост - это концепция, которая существует вне контекста вашего приложения, поэтому логика для нее должна оставаться в модели.

Я думаю, что публикация в / topic / 1 / голосования для создания голоса звучит довольно разумно, и это то, что большинство людей сделали бы.

Альтернативой является разрешение запроса PUT на / topic / 1 / голосование / имя пользователя (или его разновидность). Это, возможно, более информативно, чем пост, и должно соответствовать спецификации HTTP для PUT. Вам, конечно, нужно проверить имя пользователя, вошедшего в систему, по имени пользователя в URL.

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