Rails新手 - 如何构建日历生成应用程序

时间:2013-03-19 05:24:01

标签: ruby-on-rails ruby ruby-on-rails-3 icalendar

我正在开展一项服务,为我们的学生和教师提供他们学习日期的一个日历(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的一些访问令牌)。 Feed将在第一次请求时生成,缓存一段时间(并在需要时按需重新生成)。

我应该将解析和生成代码放在哪里?我希望它有点模块化,因为我预计我们会在它们出现时添加其他数据源。如果我实际上没有持久保存这些数据,我应该创建日历和事件模型吗?

1 个答案:

答案 0 :(得分:1)

不,没有必要为与第三方服务的交互创建空模型。我遇到了类似的问题,我需要从外部服务接收数据,并希望它是模块化的。我发现的一个推荐的解决方案是在rails项目的根目录下的“lib”文件夹中创建一个类(处理与外部服务交互的业务逻辑)。

稍后可能需要您的控制器并用于从第三方服务接收日期。或者如果您想要自动加载,那么您可以在config.autoload_paths设置下的application.rb文件中添加lib目录的路径。