使用乐观锁定来快照市场的定价信息



我正在设计一个双边市场,业主可以以一定的价格将他们的资产出租给租房者。

让我们举个例子来asset.rb

daily_rate :decimal
hourly_rate :decimal

假设如果租房者想租用资产,他/她将提交请求。承租人应该支付他/她在提出请求时看到的价格是合理的。我希望能够锁定价格信息,即使业主在预订期间更改价格也是如此。我们可以在发出请求时获取该定价的快照。

我有几个想法:

1) 将所有价格字段存储在请求模型中

这是在请求模型中存储所有价格快照的最简单方法。这就是我们现在正在使用的。

2) [没有尝试过]使用像写字记录这样的宝石

有一些库和 Gem 可用于存储price模型的历史更改。我读到了乐观锁定模型以进行版本控制的信息。但我不知道使用它来存储定价信息是否也是常见的做法。

我会通过为资产和租房者实际想要租用东西时创建的Order单独模型来处理这个问题。基本上,您的订单至少具有与您的资产相同的两个属性(即daily_ratehourly_rate)以及您可以称之为status的第三个属性。

当潜在租客选择他们想要的资产时,你的应用将创建一个order实例,其中包含当前daily_rate和资产hourly_rate以及状态"unconfirmed"(字符串或枚举)。然后,您应该向承租人展示包含这些费率的确认页面,并询问他们是否仍想继续租赁。如果他们说是,您可以将status设置为"confirmed".

这种结构将防止租用资产的用户在承租人下订单后能够更改价格。即使租用资产的用户在承租人的初始请求和确认之间更改了价格,承租人也可以选择以他们提出初始请求时可用的价格完成订单。

最新更新