我们使用葡萄已有很长时间了。
下面是我们为参数设置值的方式。
params do
optional :my_column1, type: Integer, desc: 'some description', values: MyModel1.all.pluck(:id)
optional :my_column2, type: Integer, desc: 'some description', values: MyModel2.all.pluck(:id)
end
我们的数据库在两个服务之间共享。上面的两列(my_column1和my_column2)被其他微服务更新。并且当某人使用API发出请求时,它将失败,并显示错误消息“ my_column1没有有效值”。 my_column2也是如此。
在调试时,我意识到在启动Rails应用程序时会设置这些值,并且只有在下次重新启动服务器时才会更新这些值。
我们想要的是这些值可以动态更新。这意味着每次我们发出请求时,它都应查询数据库并设置这些值。我很难弄清楚该怎么做,或者即使Grape可以做到。
任何帮助将不胜感激。
答案 0 :(得分:1)
您只需要将值移到proc中,以便在每次请求时对它们进行评估:
params do
optional :my_column1, type: Integer, values: -> { MyModel1.all.pluck(:id) }
end
这在主自述文件中有更详细的介绍: https://github.com/ruby-grape/grape#values