Sql 如何在RubyonRails5中检索随机GET请求?

Sql 如何在RubyonRails5中检索随机GET请求?,sql,ruby,rest,ruby-on-rails-3,mysql2,Sql,Ruby,Rest,Ruby On Rails 3,Mysql2,我已经基于办公室的Michael Scott创建了我的REST API,到目前为止,如果你进入API的主要部分,它会显示所有的引号/API/v1/quotes/,如果你添加一个id号,比如/API/v1/quotes/5,你可以得到单独的引号,但是我希望用户在提交get请求时能够得到一个随机的引号 最好使用URL的额外部分,如/api/v1/quotes/random来完成此操作 我在网上看了很多,但我想不出来。我是将代码放入quotes控制器并创建另一个函数,还是必须将其放在其他地方,例如ro

我已经基于办公室的Michael Scott创建了我的REST API,到目前为止,如果你进入API的主要部分,它会显示所有的引号/API/v1/quotes/,如果你添加一个id号,比如/API/v1/quotes/5,你可以得到单独的引号,但是我希望用户在提交get请求时能够得到一个随机的引号

最好使用URL的额外部分,如/api/v1/quotes/random来完成此操作

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

提前谢谢


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

您可以在模型和控制器中这样做

型号:

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

我希望这会有所帮助。

我会配置一个
引号/random

并使用如下控制器方法:

# in controllers/quotes_controller.rb
def random
  @quote = Quote.order('RAND()').first
  render :show
end
请注意:从表中返回单个随机行是–对于MySQL

ORDER BY RAND() LIMIT 1
似乎是要走的路

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