ice_cube и recurring_select драгоценных камней и вхождений
Я пытаюсь использовать [удивительную] функциональность гемов ice_cube и recurring_select для обработки повторяющихся событий. у меня есть schedule
(текст) столбец в моей базе данных и следующее в модели событий:
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
Глядя на столбец расписания в psql, он, кажется, правильно хранит расписание.
Вот моя форма:
.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
Тем не менее, когда я пытаюсь вывести converted_schedule
, он показывает только дату начала и не показывает никаких дополнительных дат. У меня есть несколько подозрений, что я возился безуспешно... возможно, YAML не конвертируется правильно для converted_schedule
метод? Возможно, мне нужна дата окончания (я не вижу, где эта функция доступна на recurring_select)?
1 ответ
Посоветовавшись с Джоном Крепецци (автором драгоценного камня ice_cube - спасибо, Джон!), Я обнаружил, что храню правило для повторений в отличие от самого графика. Следующий код исправил проблему:
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
Примечание: я также переключился на сохранение этого столбца в виде хэша вместо YAML, как было ранее опубликовано.