葡萄如何动态设置参数值

Grape how to set param values dynamically

我们用grape已经很久了

下面是我们如何为参数设置值。

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 does not have a valid value."。 my_column2.

也是如此

调试时我意识到在启动 rails 应用程序期间,这些值正在设置,并且只有在我们下次重新启动服务器时才会更新。

我们想要的是动态更新这些值。这意味着每次我们发出请求时,它都应该查询数据库并设置这些值。我很难弄清楚如何做到这一点,或者即使 Grape 可以做到这一点。

任何帮助将不胜感激。

您只需将这些值移动到一个过程中,以便在每次请求时对其进行评估:

params do
  optional :my_column1, type: Integer, values: -> { MyModel1.all.pluck(:id) }
end

这在此处的主要自述文件中有更详细的介绍: https://github.com/ruby-grape/grape#values