0

我正在为电子商务网站创建一个 ROR 应用程序,该应用程序在一段时间内处理租赁物品的管理。这些物品将被实际交付和提取。项目总是租用 30 天。

所以我面临的问题是,我需要以某种方式获得可以租用物品的日期,并且从那时起至少可以使用 30 天。(例如,如果某件商品被预订为从现在起 10 天后租用,则客户今天无法租用该商品)

在我的数据库中,我有一个租金表,其中存储了取货和交货日期。

我将使用 jQuery 日期选择器,并且只需要一次加载 1 个月的可用日期(我可以在每次按下下个月按钮时重做查询以隐藏不可用的日期)

执行此类查询并获取一个月中某项可用 30 天的所有天数的最佳方法是什么?我总是可以遍历该月的每一天并检查 30 天内是否有任何其他记录,但这似乎是查询的过剩。

任何帮助将不胜感激。

谢谢,泰勒

4

1 回答 1

0

您怎么知道某件物品是在哪一天被预约取走的?在此基础上进行查询。也许您的 Rental 模型有一个reserved_on属性?

class Rental < ActiveRecord::Base

  scope :available, where('rented = ? AND reserved_on > ?', false, 30.days.from_now)

end

编辑以回应评论

如果正在查看单个对象,您可以在其上创建如下方法:

def last_available_day
  delivery_date && delivery_date - rental_period  # 30 days
end

def is_available_on?(date)
  return true unless last_available_day
  date <= last_available_day
end
于 2012-06-19T14:53:09.877 回答