检查ActiveRecord中所有结果的方法

时间:2014-02-12 18:49:47

标签: ruby-on-rails

我正在创建一个API来处理一些幻灯片,那就是我的路由:

  scope "/api/v1" do
    scope "/slides" do
      post "/" => "slides#create"
      get ":slide_id" => "slides#show"
      put ":slide_id" => "slides#update"
    end
  end

正如您所看到的,只有一个get需要:slide_id参数,但如果我想显示该表中的所有结果,该怎么办?我该怎么办?

我的想法

  scope "/api/v1" do
    scope "/slides" do
      post "/" => "slides#create"
      get "/" => "slides#show_all" # here's the magic
      get ":slide_id" => "slides#show"
      put ":slide_id" => "slides#update"
    end
  end

你看到了“神奇”吗?无论如何,我觉得这不是做我想要的最好的方法,但是我没有看到任何替代方法,只是为了检查方法show是否有一些参数,如果有的话,那么只显示用户的内容想要,否则,显示一切。

你能给我一些想法吗?

2 个答案:

答案 0 :(得分:1)

您应该调用该操作index。是的,有一个单独的动作来显示记录集合是完全有效的解决方案。带有附加参数的变体闻起来有点......如果您有疑问,可以随时查看一些示例。例如Twitter REST API

答案 1 :(得分:1)

我不确定我是否理解你的要求。

您可以按照以下方式进行路由。

scope "/api/v1" do
    scope "/slides" do
      post "/" => "slides#create"
      get "(:slide_id)" => "slides#show" # slide_id param is optional
      put ":slide_id" => "slides#update"
   end
end

在show动作中,检查是否传递了slide_id参数。