2009-10-26 31 views
2

所以我有一個用戶,郵政,和投票模型。要使用模型作爲資源?

User has_many Vote 
Post has_many Vote 

在我的單元測試,我定義了一個名爲@ post.vote_up它創造了一個帖子投票的方法,但後來我開始思考這樣的界面是否會允許寧靜的方法。

如果我打電話給一個POST /主題/ 1 /張選票,VoteController創建行動將被調用。

在那個控制器裏面,它不是很糟糕嗎?像@ post.vote_up

我應該簡單地在PostController中創建一個名爲vote_up的成員動作,並忘記使用Vote作爲資源嗎?

謝謝!

回答

3

什麼,你總是要問自己,在這種情況下是這樣的:

這是否應用環境之外這一行動是有意義的。

如果它確實屬於模型。否則它屬於控制器。投票是一種概念,它確實存在於應用程序的上下文之外,因此其邏輯應該保留在模型中。

我認爲發佈/ topic/1 /票來創建一個投票聽起來很合理,而且是大多數人會做的。

另一種方法是允許PUT請求/ topic/1/votes/username(或其中的一些變體)。這可以說比帖子更具說明性,並且應該遵循PUT的HTTP規範。您當然需要根據URL中的用戶名來驗證登錄的用戶名。