Ruby on Railsでアプリを作ってみよう⑤
モデルとデータベースの役割
入力した情報などを保存しておくことができなければ
アプリケーションとして成り立ちません。
今回は情報を保存するためのデータベースとモデルについて学習していきましょう。
テーブル
データベース内に作成される表形式でデータを収納する仕組みです。
全ての情報がごちゃ混ぜに保存されていると管理ができませんので
情報の種類ごとにテーブルを作成し管理します。
レコードとカラム
表形式のテーブルに置いて行はレコード列はカラムといいます。
モデル
MVCの役割の一つで
データベースにどんな情報を保存するか、またどんな情報を取得してくるかを管理する役割を
持つのがモデルです。テーブルごと対応するモデルで管理されています。
図3
それではモデルを作成していきましょう
rails g model コマンド
rails g model モデル名(単数形)
コントローラーは複数形で名前を付けましたがモデルは単数形で名前をつけましょう。命名規則です。
postモデルを作ってみましょう。
rails g model post
それではテーブルにどんなカラムを設定するかなど仕様を決めていきましょう。
マイグレーション
テーブルの仕様書です。このファイルの中にどのようなテーブルにするか書き込み反映します。
マイグレーションファイルはモデル作成と同時に自動で作られます。開いてみましょう。
class CreatePosts < ActiveRecord::Migration[6.0]
def change
create_table :posts do |t|
#ここに設定したいカラム名や種類などをかく
t.timestamps
end
end
end
マイグレーションファイルにはカラム名とカラムの型という物を記述します。
カラムの型は書き方が決まっていて複数の種類があります。用途によって使い分けます。
カラムの型 | 説明 | 用途 |
---|---|---|
integer | 数値 | 金額、回数など |
string | 文字(短文) | ユーザー名、メールアドレスなど |
text | 文字(長文) | 投稿文、説明文など |
boolean | 真か偽か | はい・いいえの選択、成功・失敗のフラグなど |
datetime | 日付と時刻 | 作成日時、更新日時など |
テキスト型のcommentカラムを作ってみましょう
class CreatePosts < ActiveRecord::Migration[6.0]
def change
create_table :posts do |t|
t.text :comment
t.timestamps
end
end
end
t.の後ろに記述されているのがカラムの型、その右側にシンボルで記述されているのがカラム名になります。
ここで作成したのはtext型のcommentカラムになります。
マイグレーションファイルに記述しただけだとまだデータベースに反映されないので
マイグレーションを下記のコマンドで実行することが必要です。
rails db:migrate
これでpostsテーブルに反映されました。
マイグレーションを変更したい時
一度マイグレーションを実行するとマイグレーションファイルの中身を書き換えただけでは
変更が反映されませんロールバックしてから記述を修正し再度マイグレーションを実行しましょう。
rails db:rollback
rails db:migrate:statusコマンド
マイグレーションが実行済みであるかを確認するコマンド
Statusの部分にはマイグレーションが実行されているかいないかが示されています。
upなら実行中、downなら実行されていませんロールバックがうまく実行されていればdownになっています。
Sequel Pro
データベースを可視化できるツールです。
テーブル情報やカラム名などの情報を確認することができます。
以上です。
Author And Source
この問題について(Ruby on Railsでアプリを作ってみよう⑤), 我々は、より多くの情報をここで見つけました https://qiita.com/masakichi_eng/items/caa209d05371ad154aa2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .