【问题标题】:Grape how to set param values dynamically葡萄如何动态设置参数值
【发布时间】:2019-05-16 12:31:08
【问题描述】:

我们用葡萄很久了。

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

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 也是可能的。

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

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

    这里的主要 README 对此进行了更详细的介绍: https://github.com/ruby-grape/grape#values

    【讨论】:

    • 您好,谢谢您的回答。是的,这就是我所做的,并且有效。我第一次误解了这个。我认为这也会在启动时设置值。好吧,就像一个魅力。
    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多