gem ice_cube для событий возрождения
У меня есть простая модель событий (название, дата, пользователь), и я создал календарь событий по месяцам (gem 'watu_table_builder'). Мне нужна функция для создания повторяющихся событий. Я понял, что могу использовать для этого gem ice_cube. Но мне это не понятно.
Я добавил в модель:
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) Как я могу объединить правила повтора с массивом Events?
2) Как я понимаю, я могу сохранить в БД информацию о повторениях в yaml yaml = schedule.to_yaml
Но мне не ясно, как это хороший способ создать выпадающий список для повторов (нет, каждый день, каждый месяц, каждый год) и связать его с правилами расписания. Где и как я должен это реализовать (преобразовать выбор пользователя в правильный график)
1 ответ
Вы не сможете запросить в базе данных расписание сериализованного (yaml) события, чтобы отфильтровать события по месяцам, если вы пытаетесь это сделать. Если вам нужно сделать это, то вам придется хранить schedule.occurrences
как строки в отдельной таблице объединяются: это то, что я делаю в нашем приложении.
У меня могло бы быть больше деталей, чтобы добавить к этому ответу позже, в то же время взгляните на мой гем https://github.com/avit/schedule_attributes, если он поможет вам создать селекторы для построения расписаний из пользовательского ввода (мне все еще нужно обновить документы и выпустить его...)