2013-04-03 12 views
5

Basit Etkinlik modelim var (başlık, tarih, kullanıcı) Ve Etkinlik Takvimini aylara göre oluşturdum (gem 'watu_table_builder'). Yinelenen olaylar yaratmak için özelliğe ihtiyacım var. Bunun için gem ice_cube kullanabileceğimi düşündüm. Ama benim için net değil.İstifleme olayları için gem ice_cube

Ben modele eklendi:

Ben Olaylar dizisi ile tekrar kuralları birleştirebiliriz nasıl
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)?

2) Anlıyorum gibi, (I YAML içinde YAML = schedule.to_yaml

tekrarlar hakkında bilgi db kaydedebilir Ama buna tekrarlar için açılır oluşturmak için iyi bir yoldur nasıl benim için açık değildir yok, her gün, her ay, her yıl) ve shedule kuralları ile bağlantı kur. Nerede ve nasıl bunu fark etmeliyim (kullanıcı seçeğini sağdaki shedule çeviriniz)

+0

"gem calendar_table" nedir ve ne yapar? Onu bulamıyorum. –

+0

Üzgünüz, bu 'watu_table_builder'. – Gabi

+0

Sadece sayfadaki takvim oluşturuldu. Index.html.erb dosyasındaki kod <% = calendar_for (@events,: year => @ date.year,: month => @ date.month) do | takvim | %> .................... <% end %> – Gabi

cevap

1

Olayları ayıklamak için olayın seri hale getirilmiş (yaml) takvimi için veritabanını sorgulayamayacaksınız. yapmak. Bunu yapmanız gerekiyorsa, schedule.occurrences'u ayrı bir tablo birleştirmesinde satırlar olarak depolamanız gerekir: Bu, bizim uygulamanızda yaptığım şeydir.

Bu yanıtı daha sonra eklemek için daha fazla ayrıntıya sahip olabilirim, bu arada, kullanıcı girdisinden yapılandırma çizelgeleri oluşturmak için seçmenler oluşturmanıza yardımcı olacaksa, schedule_attributes gemime bir göz atın (yine de dokümanları güncellemem ve ...

+1

Veritabanında nasıl bir yineleme kuralı saklayabilirim? Ben sonra zamanlama = repeats.from_hash db onu kullanmak db tekrarları = schedule.to_hash veya tekrarlar = schedule.to_yaml bir zamanlama kurtarabilir Ama bir kural ne olduğunu bilmek gerekir. Örneğin, haftada bir tekrarlanırsa, bir kuralı db'ye nasıl kaydedebilirim veya kuralı programdan nasıl öğrenebilirim? Kurallar için .to_hash ve .from_hash gibi bazı yöntemler var mı? – Gabi

+0

Bu kütüphaneyi bir araya getirdiğiniz için teşekkür ederiz. Dokümanlar güncellemesi ve resmi sürüm için bekliyorum. @gabi'ye benzer bir şeyi uygulamaya çalışacağım – kevinwmerritt