Ruby on rails 是否将模型用作资源?

Ruby on rails 是否将模型用作资源?,ruby-on-rails,ruby,rest,Ruby On Rails,Ruby,Rest,所以我有一个用户,帖子,和投票模型 User has_many Vote Post has_many Vote 在我的单元测试中,我定义了一个名为@post.vote_up的方法,该方法为一篇文章创建投票,但随后我开始考虑这样的接口是否允许restful方法 如果我在帖子中调用/topic/1/投票,则会调用VoteController的create操作 在这个控制器中,调用像@post.vote\u这样具体的东西不是很糟糕吗 我是否应该在PostController中创建一个名为vote_u

所以我有一个用户帖子,和投票模型

User has_many Vote
Post has_many Vote
在我的单元测试中,我定义了一个名为@post.vote_up的方法,该方法为一篇文章创建投票,但随后我开始考虑这样的接口是否允许restful方法

如果我在帖子中调用/topic/1/投票,则会调用VoteControllercreate操作

在这个控制器中,调用像@post.vote\u这样具体的东西不是很糟糕吗

我是否应该在PostController中创建一个名为vote_up的成员操作,然后忘记使用vote作为资源


谢谢

在这种情况下,你总是需要问自己:

此操作在该应用程序的上下文之外是否有意义

如果是,则它属于模型。否则它属于控制器。为帖子投票是一个概念,它确实存在于应用程序的上下文之外,因此它的逻辑应该保留在模型中

我认为发布到/topic/1/voces来创建投票听起来很合理,这也是大多数人会做的事情

另一种方法是允许对/topic/1/voces/username(或其某些变体)进行PUT请求。这可以说比post更不规范,应该遵循PUT的HTTP规范。当然,您需要根据URL中的用户名验证登录的用户名