大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Ruby:宝石经验,用于重复的日历事件?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class EntryForm < FormModel include IceCube class_eval &ValidatesTimelinessSupport[{:start_date => :datetiR_723_11845@E}] Units = [Day = 'day',Week = 'week'] Intervals = %w[0 1 2 3 4 5 6 7 8 9] Week_Days = [:sunday,:monday,:tuesday,:Wednesday,:thursday,:friday,:saturday] Days_With_Letters = Week_Days.zip(%w[S M T W T F S]) attr_accessible_accessors :interval,:unit,:start_date attr_accessible_accessors *Week_Days def_delegators :@model,:display_title,:schedule_yaml,:schedule_yaml= validates_date :start_date,:allow_blank => true validates_inclusion_of :unit,:in => Units validates_inclusion_of :interval,:in => Intervals validates_inclusion_of :complete,:in => %w[0 1],:allow_blank => true Week_Days.each { |day| validates_inclusion_of day,:allow_blank => true } before_edit { if not schedule_yaml.blank? and hash = YAML::load(schedule_yaml) schedule = schedule.from_hash(hash) end if schedule and rule = schedule.rrules.first @start_date = schedule.start_date rule_hash = rule.to_hash @interval = rule_hash[:interval] case rule when DailyRule @unit = Day when WeeklyRule @unit = Week rule_hash[:validations][:day].try :each do |day_index| send "#{Week_Days[day_index]}=",1 end end else @start_date = Date.today @interval = 1 @unit = Day end } before_save { sd = @start_date.blank? ? Date.today.to_all_day : @start_date.parse_date_in_timezone i = @interval.to_i schedule = schedule.new(sd) rule = case @unit when Day Rule.daily i when Week Rule.weekly(i).day( *Week_Days. SELEct { |day| send(day).to_i == 1 } ) end schedule.add_recurrence_rule(rulE) self.schedule_yaml = schedule.to_yaml end } end
以上是大佬教程为你收集整理的ruby-on-rails – Ruby:宝石经验,用于重复的日历事件?全部内容,希望文章能够帮你解决ruby-on-rails – Ruby:宝石经验,用于重复的日历事件?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。