葡萄如何动态设置参数值
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
我们用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