【问题标题】:Handle reucrring events in rails处理 Rails 中的重复事件
【发布时间】:2018-09-10 02:00:49
【问题描述】:

我对 Rails 非常陌生,目前正在处理经常性事件。我有一个功能,用户可以选择重复事件,例如“星期一”、“星期二”,而我要做的是,为每一天使用布尔类型创建列,并将其设置为 false如果有任何输入,请更新到true,但我觉得这不是一个真正有效的方法。我查了一些gem,比如冰块。但是,这对我来说似乎太多了,就像我所需要的只是存储重复事件,如果用户添加并根据日期显示用户。例如,如果是星期一,则显示添加到Monday 的用户。除了使用 gem 之外,还有什么建议或更好的方法来实现这一目标吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    Ice Cube 听起来确实有点矫枉过正,因为您只是想在一周中的特定日期运行代码。幸运的是,Ruby 有一个“日期”类,可以做你想做的事。

    在您的模型调用中,要求 'date',获取当前日期并针对当前日期运行星期几方法。

    2.4.0 :008 > require 'date'
     => true 
    2.4.0 :009 > foo = Date.today
     => #<Date: 2018-09-09 ((2458371j,0s,0n),+0s,2299161j)> 
    2.4.0 :010 > foo.monday?
     => false 
    2.4.0 :011 > foo.sunday?
     => true 
    2.4.0 :012 > foo.friday?
     => false 
    

    如果使用 .sunday?.monday? 等对您不起作用,您可以像这样获得星期几:

    day_of_week = foo.wday  # 0 = Sun, 1 = Mon etc.
    

    这样,您可以有一个接受 user_idday_of_week 参数的方法,您可以使用它们来检查您的后端是否指示该用户在一周中的这一天执行某些操作。

    【讨论】:

    • 您好,感谢您的回答!非常感谢。所以你建议像我计划的那样在表格中设置列。对吗?
    • @Jay 没错。只要有可能,目标就是提供适合您情况的答案,而不是强迫您改变计划。为此,我只提供了有关如何确定星期几的详细信息,而对具体实施故意保持模糊。
    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 2018-03-27
    • 1970-01-01
    • 2018-03-26
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多