1. takehanKosuke

    Posted

    takehanKosuke
Changes in title
+railsのseedの書き方いろいろ、、、
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,67 @@
+#seedファイルって何?
+seedファイルというのは簡単に言うと初期データのことです。  
+例えば、コーディング中に何らかの理由でデータベースをリセットした場合中に入っているデータももちろんですが消えてしまいます。
+ですが、ユーザー登録機能がある場合リセットするたびに毎回ユーザー登録をし直す必要が出てきます。  
+仮にそれが普通のユーザーだった場合はそれでもいいかもしれませんが、アドミン権限をユーザーにrollカラムをつける形でアドミン権限の設定を行っていた場合、ユーザー登録のあとにコンソールでアドミン権限を付与するという2度手間になってしまいます。  
+なのでrailsではseedファイルに入れておきたいデータを```db/seeds.rb```に記述していきます。  
+
+##seedの書き方にはいろいろある
+
+###基本
+
+```ruby
+User.create!(
+ email: 'test@test.com',
+ password: '111111',
+ name: 'テスト太郎',
+)
+```
+
+おそらくこの書き方が一番ベーシックで基本となる書き方だと思う。
+なんかよくわからないときはこうやって書いておけばなんとかなる。
+
+###配列系1
+
+```ruby
+User.create!(
+ [
+ {
+   email: 'test1@test.com',
+ password: '111111',
+ name: 'テスト太郎',
+ },
+ {
+   email: 'test2@test.com',
+ password: '222222',
+ name: 'テスト徹子',
+ }
+)
+```
+
+同じモデルのレコードを複数作成したいときはこんな感じに配列の中に入れてあげると、一気に作成してくれる。
+
+###配列系2
+```ruby
+[
+ ['test1@test.com', '111111', 'テスト太郎'],
+ ['test2@test.com', '222222', 'テスト徹子']
+].each do |mail, pass, name|
+ User.create!(
+ { email: mail, password: pass, name: name }
+ )
+```
+
+この書き方は無駄な記述が一番少ないような気がする。
+でも、カラム数が多くなるとどれがどのカラムを指しているのかがわかりにくくなるのが欠点かと、、、
+
+##まとめ
+seedファイルを書いたあとは
+
+```console
+rake db:seed
+```
+
+としてあげることでseedに書かれた内容をデータベースに反映させることができます。
+この他にもCSVからデータベースに反映させる方法や関連テーブルに一緒にデータを入れる方法等もありますが、それはまた気が向いたら追記します笑
+
+