假设我正在构建一个酒店预订平台,每个房间记录都有可用性日历。一个常见的搜索条件是按持续时间搜索。用户输入开始日期和结束日期,并且数据库获取在该持续时间内未被占用的房间。
我实施了一种非常幼稚的方法,将占用的天数存储为天数。
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();
}
});
所以,这显然不是一个好方法,我想知道如何更好地利用 algolia 并按持续时间搜索?
谢谢