2013-04-03 2 views
5

У меня есть простая модель события (название, дата, пользователь) И я создал Календарь событий по месяцам (gem 'watu_table_builder'). Мне нужна функция для создания повторяющихся событий. Я понял, что могу использовать gem ice_cube для этого. Но это не ясно для меня.gem ice_cube for reccurence events

Я добавил к модели:

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) Как я понимаю, я могу сохранить в БД информации о повторах в YAML YAML = schedule.to_yaml

Но это не для меня ясно, как это хороший способ для создания раскрывающихся повторов (ни один, каждый день, каждый месяц, каждый год) и связывать его с правилами расписания. Где и как я должен это понимать (конвертировать выбор пользователя в правую расписание)

+0

Что такое "gem calendar_table" и что он делает? Я не могу найти его. –

+0

Извините, это «watu_table_builder». – Gabi

+0

Это только что созданный календарь на странице. Мой код в index.html.erb равен <% = calendar_for (@events,: year => @ date.year,: month => @ date.month) сделать | календарь | %> .................... <% end %> – Gabi

ответ

1

Вы не сможете запросить базу данных для сериализованного (ямля) расписания Event для фильтрации вхождений по месяцам, если это то, что вы пытаетесь делать. Если вам нужно это сделать, вам нужно будет сохранить schedule.occurrences в виде строк в отдельном объединении таблиц: это то, что я делаю в нашем приложении.

У меня может быть более подробная информация, чтобы добавить к этому ответу позже, тем временем посмотрим на мой драгоценный камень schedule_attributes, если он поможет вам создавать селектора для создания расписаний с пользовательского ввода (мне все равно нужно обновлять документы и выпускать их ...)

+1

Как я могу сохранить правило повторения в базе данных? я мог бы сохранить график в БД повторы = schedule.to_hash или Повторяется = schedule.to_yaml затем использовать его дб графика = repeats.from_hash Но мне нужно знать, что это правило. Например, если он повторяется еженедельно, как я могу сохранить правило в db или как узнать правило из расписания? Это некоторые методы, такие как .to_hash и .from_hash для правил? – Gabi

+0

Спасибо, что собрали эту библиотеку. С нетерпением ждем обновления документации и официального выпуска. Я попытаюсь реализовать что-то похожее на @gabi – kevinwmerritt

Смежные вопросы