防止在rails中重复请求

时间:2013-09-26 03:21:02

标签: ruby-on-rails synchronization

我们有一个带有以下API调用的Rails API

POST /book
  user_id (integer): The user id to book the class for
  class_id (integer): The id of the class to book

在此次通话中,我们向第三方API发送请求以预订课程。问题是我们希望保证不会发送对(user_id,class_id)对的重​​复请求。我们可以阻止用户多次点击图书按钮,但我们希望获得额外的保护。我们不希望手上有重复的费用。

我们如何能够执行这样的事情?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用关联的数据库表创建名为Booking的新模型,然后在发生此发布请求时创建新的预订。为了确保不存在先前的预订,您可以像这样验证模型中的唯一性:

validates_uniqueness_of :user_id, :scope => :class_id

如果在控制器中创建预订失败,那么您知道预订已经存在并且可以返回相应的消息。