1

私は、学生と教員に、学業日(学期と試験期間の開始と終了、クラスの日時、試験の日時など)の単一のカレンダー(ICSサブスクリプション)を提供するサービスに取り組んでいます。私はRubyandRailsの初心者です。ここでさらに作業を始めているので、これは良い学習の機会になると思いました。アプリの特定の部分を構造化してモデル化する方法(あるとしても)を理解するのに問題があります。

アプリは概念的にかなり基本的です:

  • ユーザーがログインすると、ユーザーレコードが作成されます。UUIDが生成され、ユーザーのレコードに保存されます。ICS URL(http://myservice.foo/feeds/johndoe_ce4970706f320130588b109add5c7cb0.ics)を生成するために使用されます。

  • ユーザーが(上記のURLを介して)ICSファイルを要求すると、カレンダーを作成するための情報を取得するために、さまざまなシステムにクエリを実行する必要があります。

    • 学生情報システム(SIS)には、ユーザーのスケジュールが含まれています(たとえば、johndoeはMWFでENGL 100を10:30〜11:20に取得しています)。このデータを解析してイベントを作成する必要があります。
    • 私たちのオンライン学習管理システムであるCanvasは、その中に含まれるコースの課題のカレンダーを提供します。ICSファイルとしてアクセスできるので、そのファイルをプルダウンして解析し、アプリが生成する「マスター」カレンダーに含める必要があります。
    • インストラクターは、コースに追加のICS URLを指定して、上記の2つのソースのいずれからも提供されていない任意のイベントを含めることができます。Canvasカレンダーと同様に、そのICSをダウンロードして解析する必要があります。

私は最初の部分を機能させています。シングルサインオンシステム(CAS)を介してログインでき、生成されたUUIDを使用してユーザーレコードが作成されます。ただし、2番目の部分の処理方法はわかりません。多くの永続的なデータを保存する必要はありません。基本的に、私はユーザーレコード(ユーザー名、生成されたUUID、およびCanvas LMSのいくつかのアクセストークンを含む)を保持するだけで済みます。フィードは、最初に要求されたときに生成され、一定期間キャッシュされます(必要に応じてオンデマンドで再生成されます)。

解析と生成のコードはどこに置くべきですか?他のデータソースが発生するときに追加することを期待しているので、ある程度モジュール化したいと思います。実際にそのデータを永続化していない場合、カレンダーとイベントモデルを作成する必要がありますか?

4

1 に答える 1

1

いいえ、サードパーティのサービスとやり取りするための空のモデルを作成する必要はありません。同様の問題が発生しました。外部サービスからデータを受信する必要があり、モジュール化する必要がありました。私が見つけた推奨ソリューションの1つは、railsプロジェクトのルートディレクトリの下にある「lib」フォルダーにクラス(外部サービスとの対話のビジネスロジックを処理する)を作成することでした。

後でコントローラーで必要になり、サードパーティのサービスから日付を受け取るために使用できます。または、自動ロードする場合は、config.autoload_paths設定でapplication.rbファイルのlibディレクトリへのパスを追加できます。

于 2013-03-19T07:42:09.313 に答える