Rails
入門

初心者向け:Railsアプリ開発時にデータ(サンプルデータ)を登録する方法

0.概略

1.テーブルを作る
2.登録用のデータを作る
3.登録処理をしてくれるファイルを作る&登録するデータを適切な場所に置く
4.データの登録
5.登録されたデータの確認

1.テーブルを作る

ここは詳細は省略。Railsチュートリアルの6.2などが参考になる。概略のみ書いておくと、3ステップ必要です。
- migration fileを作る
- migration fileを修正して、カラムを作る
- migrateする

ちなみにテーブル数が多いと地味に大変なのですが、ここら辺はプロの方はどのようにされているのかしら。

2.登録用のデータを作る

csvファイルで作ります。

sample.csv
column1,column2
1,2
1,3
1,4

なお、Date型のカラムの場合、CSVをどう作るのか?という疑問があるかと思います。
「2015,1,1」と入れると、カラムがずれてしまうと思いますよね。

日付の場合は'2015-1-1'のように入れて下さい。
(全体をクオーテーションで囲う&年月日の間はハイフンでつなぐ)

3.登録処理をしてくれるファイルを作る&登録するデータを適切な場所に置く

3.1 登録処理をしてくれるファイルの考え方

(これはイメージです。間違ってたら、詳しい方がきっと指摘してくれます)

  • csvファイルを読み込む
  • この時点で、ダミーデータが配列として読み込まれます
sample.csv
[1,2,3,・・・]

さらに細かくいうと、行の中にはカラムが入っているので、こういう状態のはずです。

sample.csvが取り込まれて排列に変換された状態
[
  [要素1つ目のcolumn1の値, 要素1つ目のcolumn2の値],
  [要素2つ目のcolumn1の値, 要素2つ目のcolumn2の値],
  [要素3つ目のcolumn1の値, 要素3つ目のcolumn2の値],
    ・・・
]

こんな感じで、各行に入っていた値が配列になっています(この辺のゆるい説明は詳しい方が補足しておくれ)。
なので、一つずつ各行に相当する要素をとりだして、以下の処理をやれば、登録できそうですね。

3.1.1 行の中の値を取り出す。

name = csv['name'] 

3.1.2 そして、新しくオブジェクトを作って、とりだした値を代入して、createする

備考ですが : create = new + save

以上のことを、データ登録処理ファイルとしてまとめるとこのようになります。

seed.rb
require 'csv'

# Userのへ初期データ読み込み
csv_data = csv.read('public/Sample.csv', headers: true)
csv_data.each do |d|
  name = d['name'] 
  age  = d['age'].to_i
  user = User.create(name: name, age: age,)
end

なお、日付の場合、値を取り出す部分はこういう処理にして下さい

str = d['birthday'] #まずは文字列として抽出
birthday = Date.parse(str) #文字列を日付に変換

3.2 データのファイルを適切な場所に置く

データ登録処理をしてくれるファイルで指定したパスに、ファイルを置く
- csv.readで指定したパスの所にファイルを置きます
- ファイルを置ける場所は、publicまたはdbフォルダの模様

4.データの登録

rake db:seed

5.登録されたデータの確認

こちらのためになるサイトを見てやってみましょう!