2013-04-03 5 views
5

Ich habe ein einfaches Event-Modell (Titel, Datum, Benutzer) Und ich erstellt Veranstaltungskalender von Monaten (gem 'watu_table_builder'). Ich brauche die Funktion, um wiederkehrende Ereignisse zu erstellen. Ich habe herausgefunden, dass ich dafür den Edelstein ice_cube verwenden kann. Aber es ist nicht klar für mich.gem ice_cube für reconcence events

ich hinzugefügt Modell:

class Event < ActiveRecord::Base 
    #require 'ice_cube' 
    include IceCube 

    belongs_to :user 

    validates :title, :presence => true, 
        :length => { :minimum => 5 } 
    validates :shedule, :presence => true 

    def self.events_and_repeats(date) 
    @events = Event.where(shedule:date.beginning_of_month..date.end_of_month) 

# Here I need to figure out what is events repeats at this month (from date param) 
# how I may combine it with Events array 

    @events_repeats = @events # + repeats 

    return @events_repeats 

    end 

1) Wie kann ich mich wiederholen Regeln mit Events Array kombinieren?

2) Wie ich verstehe, kann ich sparen yaml Informationen über Wiederholungen in yaml db = schedule.to_yaml

Aber es ist für mich nicht klar, wie es guten Weg ist, Drop-down für Wiederholungen erstellen (keine, jeden Tag, jeden Monat, jedes Jahr) und verknüpfen Sie es mit Zeitplan Regeln. Wo und wie ich es umsetzen sollte (Benutzerauswahl in richtigen Zeitplan umwandeln)

+0

Was ist "gem calendar_table" und was macht es? Ich kann es nicht finden. –

+0

Entschuldigung, es ist 'watu_table_builder'. – Gabi

+0

Es ist nur Kalender auf Seite erstellt. Mein Code in index.html.erb ist <% = calendar_for (@events,: year => @ date.year,: Monat => @ date.month) do | calendar | %> .................... <% end %> – Gabi

Antwort

1

Sie können die Datenbank nicht nach dem serialisierten (yaml) Zeitplan des Ereignisses durchsuchen, um Vorkommen nach Monat zu filtern, wenn Sie das versuchen machen. Wenn Sie das tun müssen, dann müssen Sie die schedule.occurrences als Zeilen in einer separaten Tabelle beitreten zu verbinden: das ist, was ich in unserer App mache.

Ich könnte weitere Details zu dieser Antwort später hinzufügen, in der Zwischenzeit einen Blick auf meine schedule_attributes Juwel, wenn es hilft Ihnen die Selektoren für die Erstellung von Zeitplänen aus Benutzereingaben zu bauen (ich muss noch Dokumente zu aktualisieren und ...)

+1

Wie kann ich eine Wiederholungsregel in der Datenbank speichern? Ich könnte einen Zeitplan in db speichern Wiederholungen = schedule.to_hash oder Wiederholungen = schedule.to_yaml dann verwenden, von db schedule = repeats.from_hash Aber ich muss wissen, was in der Regel ist. Zum Beispiel, wenn es wöchentlich wiederholt wird, wie könnte ich eine Regel in db speichern oder wie könnte ich die Regel aus dem Zeitplan wissen? Gibt es Methoden wie .to_hash und .from_hash für Regeln? – Gabi

+0

Danke für das Zusammenstellen dieser Bibliothek. Ich freue mich auf das Dokument-Update und die offizielle Veröffentlichung. Ich werde versuchen, etwas Ähnliches wie @gabi zu implementieren – kevinwmerritt