9

ホテルの予約プラットフォームを構築していて、すべての Room レコードに空室状況カレンダーがあるとしましょう。一般的な検索条件は、期間で検索することです。ユーザーが開始日と終了日を入力すると、データベースはその期間から占有されていない部屋を取得します。

占有された日を日の配列として保存する、非常に単純なアプローチを実装しました。

attribute :occupied_at_i do
    array = []
    if !occupied_at.empty?
        occupied_at.each do |date|
            array << Time.parse(date).to_i
        end
    end
    array
end

そして、クライアント側で、次の JavaScript コードを追加して、その日がnumericRefinement

// Date Filters
$('.date-field')
    .on('change', function() {
        if(_.every(_.map($('.date-field'), function(date) {return _.isEmpty(date.value) }), function(n) {return n==false;})) {
            helper.clearRefinements('occupied_at_i');
            var arrayOfDates = addDateFilters();
            _.forEach(arrayOfDates, function(n) {
                helper.addNumericRefinement('occupied_at_i', '!=', n);
            });
            showClearAllFilters();
            helper.search();
        }
    });

だから、明らかにそれを行うのは良い方法ではありません.アルゴリアを活用して期間で検索する方が良いと思いますか?

ありがとう

4

1 に答える 1