2013-03-19 60 views
1

我正在致力於爲學生和教職員提供一個日曆(ICS訂閱)的學術日期(開始和結束的期限&考試時間,課程日期時間,考試日期和時間等)。我是Ruby和Rails的新手;我們在這裏開始更多的工作,所以我認爲這將是一個很好的學習機會。我無法弄清楚如何構建和建模應用程序的某些部分(如果有的話)。Rails新手 - 如何構建日曆生成應用程序

該應用程序在概念上很簡單:在

  • 用戶日誌和用戶記錄是爲他們創造。生成UUID並存儲在用戶的記錄中;它用於生成他們的ICS URL(http://myservice.foo/feeds/johndoe_ce4970706f320130588b109add5c7cb0.ics)。

  • 當用戶請求他們的ICS文件(通過上述網址),我需要查詢一堆不同的系統,從而爲建立一個日曆來獲取信息:

    • 學生信息系統(SIS)包含用戶的時間表(例如johndoe從10:30 - 11:20開始在MWF上使用ENGL 100)。我需要解析這些數據並創建事件。
    • 我們的在線學習管理系統Canvas爲其內部的課程提供了日程安排。它可以作爲ICS文件訪問,所以我需要下拉該文件,解析並將其包含在我的應用程序將生成的「主」日曆中。
    • 教師可以爲他們的課程指定一個額外的ICS URL,以便他們可以包含以上兩個來源中未提供的任意事件。像Canvas日曆一樣,我需要下載並解析ICS。

我有第一部分工作;我可以通過我們的單點登錄系統(CAS)登錄,並使用生成的UUID創建用戶記錄。不過,我不確定如何處理第二部分。我不需要存儲太多的永久數據;基本上,我只需要保留用戶記錄(其中包含用戶名,生成的UUID以及Canvas LMS的一些訪問令牌)。該Feed將在第一次請求時生成,緩存一段時間(並在需要時按需重新生成)。

我應該在哪裏放置解析和生成代碼?我希望它有點模塊化,因爲我預計在出現問題時會添加其他數據源。我是否應該創建日曆和事件模型,如果我實際上沒有持續這些數據?

回答

1

不,不需要創建與第三方服務交互的空模型。我有類似的問題,我需要從外部服務接收數據,並希望它是模塊化的。我發現的一個推薦解決方案是在rails項目的根目錄下的「lib」文件夾中創建一個類(處理與外部服務交互的業務邏輯)。

它以後可能需要在您的控制器,並用於從第三方服務接收日期。或者,如果您希望自動加載,則可以在config.autoload_paths設置下的application.rb文件中添加lib目錄的路徑。

+0

把東西放在/ lib和/ app/services中有區別嗎?我已經看到這兩種方式。 – grahamb 2013-03-20 22:10:35

+1

由於「lib」文件夾中的Rails 3類不是自動加載的,並且必須是必需的,但「/ app/services」中的類將自動加載。如果你只需要單個控制器中的服務類,那麼將它放在「lib」文件夾中並僅在該控制器中需要它是比較安全的。 – georgelx 2013-03-21 07:06:15

相關問題