如何在 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
似乎是要走的路。
我已经根据 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
似乎是要走的路。