如何在 Rails 5 上检索 Ruby 中的随机 GET 请求?

How do I retrieve a random GET request in Ruby on Rails 5?

我已经根据 Office 的 Michael Scott 创建了我的 REST API,到目前为止,如果你进入 API 的主要部分,它会显示所有引号 /api/v1/quotes / 如果你添加一个 id 号码,比如 /api/v1/quotes/5,你可以获得单独的,但我希望用户在发出 GET 请求时能够获得随机报价。

这最好用 URL 的额外部分来完成,例如 /api/v1/quotes/random.

我在网上看了很多,但我想不通。我是将我的代码放入引号控制器并创建另一个函数,还是必须将其放在其他地方,例如 routes.db?我还要放入 RANDOM 的 SQL 函数,还是有更好、更有效的方法来随机化它。我的数据库中只有 50 条记录,并且在 mysql2.

中完成

提前致谢。

这是我第一次在这里发帖,通常我讨厌寻求帮助,因为我认为我总能自己解决问题,但我对 Ruby 非常陌生,所以我对如何解决问题一无所知这个。如果您需要我澄清我的问题,请告诉我。

您可以在模型和控制器中执行此操作。

型号:

class Model < ApplicationRecord
  def self.random
   Model.limit(1).order("RANDOM()").first
  end
end

控制器:在显示方法中

def show
   render json: Model.find_by(id: params[:id]) || Model.random
end

希望对您有所帮助。

我会配置 quotes/random collection route:

# in config/routes.rb
resources :quote do
  get 'random', on: :collection
end

并使用这样的控制器方法:

# in controllers/quotes_controller.rb
def random
  @quote = Quote.order('RAND()').first
  render :show
end

请注意:从 table 返回单个随机行是 database specific – 对于 MySQL

ORDER BY RAND() LIMIT 1

似乎是要走的路。