如何在我的网络应用程序中安全地处理运费选项?

时间:2011-10-26 22:35:33

标签: ruby-on-rails shipping

我从外部API请求运费并得到如下结果:

ground  : '$1'
express : '$5'

然后我向用户显示这些选项,他们选择一个。理想情况下,他们会提交一个代表他们选择的选项的ID,我会查找相应的选项,但是要查找它,我需要有一个存储的选项列表。我可以在我的数据库中存储选项列表,但如果他们返回并更改他们的地址或购物车中的项目,我将需要更新它。

这意味着我基本上是缓存和重新缓存出货选项,这似乎是一个相对简单的任务的大量开销。

是否有一种更直接的方式来做到这一点,我忽略了?

1 个答案:

答案 0 :(得分:0)

为什么存储它?根据API的响应动态生成表单/下拉列表,并将下拉列表的值设置为包含ID,而不是美元汇率。然后,您在控制器中返回的参数是来自API的美元金额,并插入到表单中,而不是记录ID。

假设运费不时变化,无论如何都要存储它。通常,这是API的目的,因此您可以随时在需要时查找它。另一方面,给定订单的运费不太可能在用户会话的空间内发生变化。

要反映下面的评论,您可以在订单时缓存运费,总订单重量和目的地地址。然后,如果重量,订单中的商品或目的地地址发生变化,则仅重新请求新的运费。