Ice_cube和recurring_select宝石和事件



我试图利用ice_cube和recurring_select gems的[awesome]功能来处理循环事件。我有一个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中的schedule列,它似乎正确地存储了schedule。

这是我的表格:

.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上可用)?

在咨询了John Crepezzi (ice_cube gem的作者-谢谢John!)之后,我发现我存储的是递归规则,而不是计划本身。下面的代码修复了这个问题:

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之前发布的

相关内容

  • 没有找到相关文章

最新更新