我正在开发一项服务,为我们的学生和教职员工提供一个单一的日历(ICS 订阅),其中包含他们的学术日期(学期和考试期的开始和结束、上课日期和时间、考试日期和时间等)。我是 Ruby 和 Rails 新手;我们在这里开始更多地使用它,所以我认为这将是一个很好的学习机会。我无法弄清楚如何构建和建模(如果有的话)应用程序的某些部分。
该应用程序在概念上非常基本:
用户登录并为他们创建用户记录。生成一个 UUID 并存储在用户的记录中;它用于生成他们的 ICS URL ( http://myservice.foo/feeds/johndoe_ce4970706f320130588b109add5c7cb0.ics )。
当用户请求他们的 ICS 文件(通过上面的 URL)时,我需要查询一堆不同的系统以获取信息以构建日历:
- 学生信息系统 (SIS) 包含用户的日程安排(例如 johndoe 在 10:30 - 11:20 参加 MWF 的 ENGL 100)。我需要解析这些数据并创建事件。
- 我们的在线学习管理系统 Canvas 为其中包含的课程提供了一个作业日历。它可以作为 ICS 文件访问,因此我需要拉下该文件,对其进行解析并将其包含在我的应用程序将生成的“主”日历中。
- 教师可以为他们的课程指定一个额外的 ICS URL,以便他们可以包含上述两个来源都没有提供的任意事件。像 Canvas 日历一样,我需要下载并解析该 ICS。
我有第一部分工作;我可以通过我们的单点登录系统 (CAS) 登录,并使用生成的 UUID 创建用户记录。不过,我不确定如何处理第二部分。我不需要存储太多永久数据;基本上,我只需要保留用户记录(其中包含他们的用户名、生成的 UUID 以及 Canvas LMS 的一些访问令牌)。提要将在第一次被请求时生成,缓存一段时间(并在需要时按需重新生成)。
我应该把解析和生成代码放在哪里?我希望它有点模块化,因为我希望我们会在其他数据源出现时添加它们。如果我实际上没有保留这些数据,我应该创建日历和事件模型吗?