2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-19

##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.登録されたデータの確認
こちらのためになるサイトを見てやってみましょう!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?