1. takehanKosuke

    No comment

    takehanKosuke
Changes in body
Source | HTML | Preview

seedファイルって何?

seedファイルというのは簡単に言うと初期データのことです。  
例えば、コーディング中に何らかの理由でデータベースをリセットした場合中に入っているデータももちろんですが消えてしまいます。
ですが、ユーザー登録機能がある場合リセットするたびに毎回ユーザー登録をし直す必要が出てきます。  
仮にそれが普通のユーザーだった場合はそれでもいいかもしれませんが、アドミン権限をユーザーにrollカラムをつける形でアドミン権限の設定を行っていた場合、ユーザー登録のあとにコンソールでアドミン権限を付与するという2度手間になってしまいます。  
なのでrailsではseedファイルに入れておきたいデータをdb/seeds.rbに記述していきます。  

seedの書き方にはいろいろある

基本

User.create!(
   email: 'test@test.com',
   password: '111111',
   name: 'テスト太郎',
)

おそらくこの書き方が一番ベーシックで基本となる書き方だと思う。
なんかよくわからないときはこうやって書いておけばなんとかなる。

配列系1

User.create!(
  [
    {
      email: 'test1@test.com',
      password: '111111',
      name: 'テスト太郎',
    },
    {
      email: 'test2@test.com',
      password: '222222',
      name: 'テスト徹子',
    }
  ]
)

同じモデルのレコードを複数作成したいときはこんな感じに配列の中に入れてあげると、一気に作成してくれる。

配列系2

[
  ['test1@test.com', '111111', 'テスト太郎'],
  ['test2@test.com', '222222', 'テスト徹子']
].each do |mail, pass, name|
  User.create!(
    { email: mail, password: pass, name: name }
  )

この書き方は無駄な記述が一番少ないような気がする。
でも、カラム数が多くなるとどれがどのカラムを指しているのかがわかりにくくなるのが欠点かと、、、

まとめ

seedファイルを書いたあとは

rake db:seed

としてあげることでseedに書かれた内容をデータベースに反映させることができます。