宁静的资源轨道

时间:2018-02-11 22:25:16

标签: ruby-on-rails rest

使这个api' restful'

的正确方法是什么?

我有一个位置,

GET location/:id
PUT location/:id

规格已经改变,现在这个位置可以有某些类型'客户端可以更新。一个要求是客户获得允许的类型(可以是固定列表中的一个 - 即[' urban',' wilderness',' private',等。])所有地点。这不是嵌套资源,它是位置表上的一列。我已经实施了,

GET location/types_allowed

有更好的RESTFUL方式吗?

另一个例子,一个位置可以有邻居,所以我做了GET locations/neighbors。我无法理解除CRUD和嵌套资源之外的REST的细微差别。谢谢!

2 个答案:

答案 0 :(得分:1)

而不是列types_allowed,而是创建type资源,关系可以像

location.rb
  belongs_to :type

type.rb
  has_many :locations

并且你的路线文件将是

resources :type do
  resources :location
end

答案 1 :(得分:1)

我强烈建议不要命名模型/列"输入"。这往往会破坏铁轨内部的神奇物品,你甚至不知道它们会在你尝试之前存在。它是"未记录的功能之一" :P

我反而建议阅读"单表继承"或"多态性"弄清楚这些中的任何一个是否适合你。

如果不是......那就说出一些东西" kind"而不是"类型"因为它会以这种方式更好地工作。

对于RESTful资源......你真的无法超越Rails指南。如果您按照routing guide :(以及所有其他的),您将了解如何执行RESTful资源