【问题标题】:To use Model as Resource or not?是否将模型用作资源?
【发布时间】:2009-10-26 14:46:37
【问题描述】:

所以我有一个 UserPostVote 模型。

User has_many Vote
Post has_many Vote

在我的单元测试中,我定义了一个名为 @post.vote_up 的方法,它为帖子创建投票,但随后我开始思考这样的界面是否允许使用 restful 方法。

如果我使用 POST 调用 /topic/1/votes,则会调用 VoteControllercreate 操作。

在那个控制器中调用像 @post.vote_up 这样具体的东西不是很糟糕吗?

我是否应该简单地在 PostController 中创建一个名为 vote_up 的成员操作而忘记使用 Vote 作为资源?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby rest


    【解决方案1】:

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

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

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

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

    另一种方法是允许对 /topic/1/votes/username(或它的某些变体)的 PUT 请求。这可以说比帖子更具描述性,并且应该遵循 PUT 的 HTTP 规范。您当然需要根据 URL 中的用户名验证登录的用户名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多