Diciamo che sto costruendo una piattaforma di prenotazione di hotel, e ogni record di Stanza ha un calendario di disponibilità. Un criterio di ricerca comune è la ricerca per durata. Dove gli input dell'utente iniziano la data e la data di fine e il database recupera le stanze che non sono occupate da quella durata.Come cercare per durata in Algolia
Ho implementato un approccio molto ingenuo in cui memorizzo i giorni occupati come una serie di giorni.
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
E poi al lato client, aggiungo il seguente codice javascript per controllo incrociato se il giorno è in 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();
}
});
Quindi, ovviamente, non è un buon modo per farlo , Mi chiedo cosa sia meglio sfruttare l'algolia e cercare per durata?
Grazie
Credo davvero che questo sia un buon modo per affrontare il problema. La ricerca di disponibilità è sempre difficile da gestire. Cosa ti turba in questa soluzione? – Jerska