1
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で初期データ(seed)を入れてみた

Last updated at Posted at 2019-03-17

はじめに

以前書いた、下記の続き。
https://qiita.com/ryosuketter/items/1d9b620fa2508cfda37b

今回は、Railsで初期データ(seed)をサクッと入れてみます。

seedファイルとは

seedファイルは、簡単に言うと初期データのことです。

具体的に、どういう初期データを、どれくらいDBに入れるかは db/seeds.rb に書きます。

モデルの作成

今回は記事の初期データを作成するとしましょう(データ構造はだいぶ簡易的です)。

記事のモデルを作成して、それをTOPページにリンクをつけて一覧表示させたいとします。

記事モデルの作成してみます。

$ rails g model Article title:string body:text

モデルをgenerateすると、マイグレーションファイルも作成されます。

[年月日時分秒日付]_create_articles.rb
class CreateArticles < ActiveRecord::Migration[5.2]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

マイグレーションファイルの内容に従って、テーブルを作成したい場合は、以下のコマンド

$ rails db:migrate

すると、articlesテーブルが作られます(DBは、MySQLを使っています)。

mysql> describe * from articles;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| title      | varchar(255) | YES  |     | NULL    |                |
| body       | text         | YES  |     | NULL    |                |
| created_at | datetime     | NO   |     | NULL    |                |
| updated_at | datetime     | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

コントローラの作成

$ rails g controller articles

記事詳細ページ用のアクションを書きます。

articles_controller.rb
class ArticlesController < ApplicationController
  def show
    @article = Article.find(params[:id])
  end
end

paramsですが、これはRailsから送られてくる情報(リクエストパラメータ)を受け取るためのメソッドで、主に2種類あります。

  • Getメソッドのクエリパラメータのデータ
  • Postメソッドで、主にformから送信されるデータ

今回は、TOPページからGetメソッドのクエリパラメータを送ります。
それを、showアクションにあるparams[:id]でクエリパラメータを受け取っています。
メソッドは、Article.findなので、Articleテーブルの中からidが一致するデータを取得して、記事テンプレートに中にデータを入れて表示させます。

コントローラの命名について

コントローラ名は複数形で作るのが基本ですが、単数形でも作成可能です。どちらかにするという規約はありません。

アクションが複数になりそうであれば、複数形にするのが基本で、TOPコントローラのように、アクションが1個(今回でいうとindex アクション)だけになりそうであるならば、単数形でも大丈夫です。

参考: https://qiita.com/EastResident/items/45696af3f1e07e2df311 のコメント欄

seedファイルの作成

少し脱線したかもですが、seedファイルの作成に戻ります。

db/seeds.rb
100.times do |i|
  Article.create!(
    title: "Title #{i+1}",
    body: "Body #{i+1}",
  )
end

こう書くことで、100回、Articleモデル(articlesテーブル)に、タイトルと本文に仮のテキストに挿入ごとに足されてゆく数字を挿入する。という意味になります。

seedファイルの内容をDBに反映

seedファイルの作成ができたら、

$ bundle exec rake db:seed

を、実行することで、seedファイルに書かれた内容をDBに反映させることができます。

以上です!

参考

1
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
1
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?