代码之家  ›  专栏  ›  技术社区  ›  allesklar

你将如何制定每日课程表?

  •  4
  • allesklar  · 技术社区  · 17 年前

    • 星期几
    • 结束时间

    • 星期三
    • 开始时间:上午10:00
    • 结束时间:中午

    我还必须提到,它是一款双语Rails 2.2应用程序,我使用的是本机的i18n Rails功能。实际上我有几个问题。

    关于一周中的哪一天,我应该创建一个包含天数列表的额外表,还是有一种内置的方法可以动态创建该列表?请记住,一周中的这些天必须在明细表视图中以英语或西班牙语呈现,具体取决于区域设置变量。

    关于每个类的开始时间和结束时间,您会使用datetime字段还是整数字段?如果是后者,您将如何具体实施?

    期待阅读你们提出的不同建议。

    3 回复  |  直到 17 年前
        1
  •  4
  •   Tony Fontenot    17 年前

    我只会将一周中的某一天存储为整数。0=>星期一6=>星期天(或任何你想要的方式,即0=>星期天)。然后将开始时间和结束时间存储为时间。

    这将使分组变得非常容易。你所要做的就是按星期几和开始时间排序。

    1. 具有以下功能: @sunday_classes = DailyClass.find_sunday_classes 返回按开始时间排序的星期天所有课程。然后每天重复。

      def find_sunday_classes
        find_by_day_of_week(1, :order -> 'start_time')
      end

      注意:find_by可能应该在末尾有id,但这只是您希望如何命名列的首选项。

    2. 翻译是唯一棘手的部分。您可以创建一个helper函数,该函数接受一个整数,并根据本地值返回一周中相应日期的文本。

        2
  •  2
  •   DanSingerman    17 年前

    如果您的数据是一个时间,那么我会将其存储为一个时间-否则,当您对其执行与日期和时间相关的操作时,您将始终必须将其从数据库中转换出来。日期是冗余数据,因为它将是时间对象的一部分。

    这意味着您不需要存储天数列表。

    如果t是时间,那么

    t.strftime('%A')
    

    所以您只需要存储开始时间和结束时间,或者开始时间和持续时间。两者应该是等价的。我很想自己存储结束时间,以防需要对结束时间进行数据操作,因此不必计算结束时间。

    我认为,您描述的其余大部分内容也不应该存储时间数据作为时间实例。

    按周、日和时间订购只是按时间列订购的问题。即

    daily_class.find(:all, :conditions => ['whatever'], :order => :starting_time)
    

    按天分组是很重要的 一点 更狡猾。然而 this is an excellent post

    find_by_sql

    date_trunc('week', starting_time)
    

    可以在GROUPBY子句中使用,也可以作为值在rails中的某些循环逻辑中使用。

        3
  •  1
  •   joel.neely    17 年前

    • 单独的表可以通过某种方式进行索引,以支持面向类或面向DOW的选择,但需要更多的胶水才能将整个图片组合到一个类中。
    • 全部的

    就(人类可读的)道指名称而言,这是一个表示层问题,不应该是道指的核心概念。(假设您决定搬到蒙特利尔,需要法语?这应该是另一个“面子”,而不是对核心实现的改变。)

    一种方法是定义自己的类时间概念,并将所有关于时间的推理划分到该类中。它可以从一个简单的表示开始(整数小时0..23,或午夜后整数分钟0..1439),然后根据需要“增长”。

    推荐文章