2009-10-26 2 views
2

У меня есть Пользователь, Сообщение и Голосование модели.Использовать модель как ресурс или нет?

User has_many Vote 
Post has_many Vote 

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

Если бы я был позвонить/тема/1/голоса с POST, то VoteController «s создать действие будет называться.

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

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

Спасибо!

ответ

3

То, что вы всегда должны спросить себя в этой ситуации заключается в следующем:

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

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

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

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

Смежные вопросы