In PostgreSQL, l'espressione extract(day from time_from) restituisce un numero di tipo double, che rappresenta il giorno del mese. Sabato chiaramente non è un doppio valido.
Se hai bisogno dell'argomento per where() per abbinare la stringa 'Saturday' (per abbinare il giorno della settimana), quindi utilizzare to_char() funzione.
user_calendars.where("trim(to_char(time_from, 'Day')) = ? ", next_day)
Hai bisogno di trim() , perché questo tipo di chiamata a to_char() è riempito a 9 caratteri.
Il caso è significativo per l'argomento "Giorno". Se lo digiti come "giorno", il valore restituito non corrisponderà a "sabato". Invece, un'espressione come to_char(time_from, 'day') restituirà qualcosa come 'sabato'.