Grape如何动态设置参数值

时间:2019-05-16 12:31:08

标签: ruby-on-rails ruby-on-rails-4 grape-api

我们使用葡萄已有很长时间了。

下面是我们为参数设置值的方式。

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可以做到。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您只需要将值移到proc中,以便在每次请求时对它们进行评估:

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

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