CSV ファイルのインポートに関しては、stackoverflow に既に他のすばらしい投稿があります。
現在のモデルは、人々が最近走った 5 つの場所を表示するように設計されています。
__________________________________________
| name | place_1 | place_2 | ... | place_5 |
|------|---------|---------|-----|---------|
| John | 1 | 3 | ... | 4 |
| Ann | 2 | 1 | ... | 2 |
| Tim | 3 | 2 | ... | 1 |
| Jack | 4 | 5 | ... | 5 |
| Joy | 5 | 4 | ... | 3 |
------------------------------------------
このスキーマの問題は、6 番目のレースに関するデータを入力する場合、前のレースのデータを削除するか、新しい列を追加する必要があり、どちらも面倒なことです。
それに応じてスキーマを変更することをお勧めします。
______________________________________
| name | place | location | date |
|------|---------|----------|----------|
| John | 1 | New York |11-11-2013|
| Ann | 2 | New York |11-11-2013|
| Tim | 3 | New York |11-11-2013|
| Jack | 4 | New York |11-11-2013|
| Joy | 5 | New York |11-11-2013|
|------|---------|----------|----------|
| John | 3 | Chigaco |24-01-2014|
| Ann | 1 | Chigaco |24-01-2014|
| Tim | 2 | Chigaco |24-01-2014|
| Jack | 5 | Chigaco |24-01-2014|
| Joy | 4 | Chigaco |24-01-2014|
|------|---------|----------|----------|
| John | 4 | London |01-02-2014|
| Ann | 2 | London |01-02-2014|
| Tim | 1 | London |01-02-2014|
| Jack | 5 | London |01-02-2014|
| Joy | 3 | London |01-02-2014|
--------------------------------------
この構造を使用すると、さまざまな人種を簡単に区別することができlocation
ますdate
。テーブルの末尾に新しいデータを追加するだけでよいので、データを削除する必要はありません...これはCSVでも可能です。
アップデート
このデータは、簡単なクエリで簡単にアクセスして並べ替えることができます。
# get's all of John's races and orders them by the date descending
Race.where(:name => "John").order("date DESC")
______________________________________
| name | place | location | date |
|------|---------|----------|----------|
| John | 4 | London |01-02-2014|
| John | 3 | Chigaco |24-01-2014|
| John | 1 | New York |11-11-2013|
--------------------------------------
たとえば、最後の 2 つの結果のみを取得したい場合は、単純にlimit
# get the 2 newest races from John
Race.where(:name => "John").order("date DESC").limit(2)
______________________________________
| name | place | location | date |
|------|---------|----------|----------|
| John | 4 | London |01-02-2014|
| John | 3 | Chigaco |24-01-2014|
--------------------------------------
これで良いアイデアが得られることを願っています。さらにいくつかのことを明確にする必要がある場合は、お気軽にお問い合わせください ;)