处理Sinatra中的数据库错误

时间:2019-05-30 11:09:49

标签: ruby postgresql sinatra

我正在写具有活动记录的Sinatra HTTP服务器。我正在使用pg数据库来存储数据。

在这段代码中,我想从数据库中获取所有带参数的汽车(名称,给它们指定顺序,限制它们),并且我需要处理来自数据库的错误。

例如,如果我从curl ping'/ cars':

curl -X GET http://localhost:8080/cars?attribute=error

我需要结果:     抱歉,没有属性错误名称

get '/cars' do    
  @cars = Car.order("#{params[:attribute]} #{params[:order]}").limit(params[:limit]).offset(params[:offset])
  @cars.to_json
 end

如何处理来自数据库的异常并将其显示给用户?

1 个答案:

答案 0 :(得分:0)

您需要检查传入的属性参数

get '/cars' do   
  if Car.columns.map(&:name).include?(params[:attribute]) 
    @cars = Car.order("#{params[:attribute]} #{params[:order]}")
             .limit(params[:limit]).offset(params[:offset])
    @cars.to_json
  else
    { error: 'Sorry, but there is no attribute with name error' }.to_json
  end
end