私はいくつかの設計提案、おそらく少しの構造定義が必要なこのシナリオを持っています:
csv ファイルをアップロードできるユーザーがいて、そのファイルの内容に基づいて、データベースにデータを入力する必要があります。
これまでのところ、この csv は非常に大きいということです。つまり、100 個以上のヘッダー フィールドがあり (クレイジーに聞こえます)、1 ファイルあたりのレコード数は誰にもわかりませんが、とにかく、これまでのところ、この csv のアップロードとデシベルの人口。ただし、この csv ファイルは、フィールド (「DIVISION」) に基づいて分類/分類する必要があります。Division は整数列であり、その値に基づいて、この csv が属する Division を特定する必要があります。これまでのところ、次の要件があります。
=> CSV file uploading
=> File classification based on div id
=> record insertion
問題はまだ解決されていません。部門自体は、さらに REGULAR と PROMO の 2 つのタイプに分類されます。
各タイプのヘッダーを持つサンプルがあります。したがって、この csv がどの区分タイプに属しているかを特定してから、処理を開始する必要もあります。
=> CSV file uploading
=> File classification based on div id and headers (counting and matching the headers for div-sub type using some already defined hash of headers for each division)
したがって、ファイルを識別した後、つまり、ファイルが属している部門とサブタイプを特定した後、存在、フォーマットチェックなどのフィールドでいくつかの検証を行う必要があります。
ファイルのアップロードにはcarrierwaveを使用し、csv処理にはsmarter_csv gemを使用してから、フロントエンドのファイル処理とアップロードの進行状況にはjquery.fileuploadプラグインのようなjqueryプラグインを使用し、バックグラウンドですべての処理とタイプチェックを行うにはバックグラウンドジョブ統合を使用します。
私は初心者なので、データベースの設計/構造のヘルプが必要です。どんな助けでも大歓迎です:)。
よろしく