2013-06-11 20 views
8

Sto tentando di utilizzare la [straordinaria] funzionalità di ice_cube e gemme ricorrenti_seleziona per gestire eventi ricorrenti. Ho una colonna di schedule (testo) nel mio database e di seguito nel modello di eventi:ice_cube e ricorrenti gemme e occorrenze

def schedule=(new_schedule) 
    write_attribute(:schedule, RecurringSelect.dirty_hash_to_rule(new_schedule).to_yaml) 
    end 

    def converted_schedule 
    Schedule.from_yaml(self.schedule, :start_date_override => self.start_date) 
    end 

Guardando la colonna di calendario in psql, sembra essere memorizzare correttamente il programma.

Ecco la mia forma:

.control-group 
    = f.label 'Date', :class => 'control-label' 
    .controls 
    = f.text_field :start_date, :class => 'datepicker' 

.control-group 
    = f.label 'Recurring?', :class => 'control-label' 
    .controls 
    = f.select_recurring :schedule, :allow_blank => true 

Tuttavia, quando tento di uscita converted_schedule, mostra solo la data di inizio e non mostrerà alcun ulteriori date. Ho alcuni sospetti che ho armeggiato senza successo ... forse lo YAML non viene convertito correttamente per il metodo converted_schedule? Forse ho bisogno di una data di fine (non vedo dove questa funzionalità è disponibile su recurring_select)?

risposta

14

Dopo aver consultato John Crepezzi (autore della gemma ice_cube - grazie John!), Ho scoperto che stavo memorizzando la regola per le ricorrenze in contrapposizione al programma stesso. Il codice seguente risolto il problema:

serialize :schedule, Hash 

def schedule=(new_schedule) 
    write_attribute(:schedule, RecurringSelect.dirty_hash_to_rule(new_schedule).to_hash) 
end 

def converted_schedule 
    the_schedule = Schedule.new(self.start_date) 
    the_schedule.add_recurrence_rule(RecurringSelect.dirty_hash_to_rule(self.schedule)) 
    the_schedule 
end 

Nota: I commutata alla memorizzazione quella colonna come un hash anziché YAML come precedentemente inviato.

+1

Non sono sicuro di seguirlo. Ultimamente sto lavorando anche con questo, e sto iniziando a capire (penso?) Che quello che voglio veramente è archiviare le regole e costruire un programma con quelle regole dopo aver estratto dal database. Puoi confermare/negare se hai mescolato il tuo uso di "regole" e "pianificazione"? Intendevi che volevi memorizzare le regole e non il programma? – Volte

Problemi correlati