0

一定期間のレンタルアイテムの管理を行うeコマースサイト用のRORアプリを作成しています。アイテムは物理的に配達され、受け取られます。アイテムは常に30日間レンタルされます。

ですから、私が直面している問題は、アイテムをレンタルでき、その時点から少なくとも30日間利用できる日をどうにかして取得する必要があるということです。(たとえば、10日後にレンタルするように予約されている場合、顧客は今日アイテムをレンタルできませんでした)

私のデータベースには、集荷日と配達日を保存する賃貸テーブルがあります。

jQuery datepickerを使用し、利用可能な日付を一度に1か月ずつロードする必要があります(利用できない日付を非表示にするには、翌月のボタンが押されるたびにクエリをやり直すことができます)

このタイプのクエリを実行し、アイテムが30日間利用可能である月のすべての日を取得するための最良のアプローチは何でしょうか?私はいつでもその月の毎日を繰り返して、30日以内に他のレコードがあるかどうかを確認することができましたが、それはクエリの余剰のようです。

どんな助けでも大歓迎です。

ありがとう、タイラー

4

1 に答える 1

0

商品の受け取り予約日はどうやってわかりますか? それをもとにクエリを作成します。おそらくあなたのレンタルモデルには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 に答える