データの保存場所(データーベース)と管理役(モデル)を作る

・データの保存場所は、データーベース
→データーベースには、データーの種類ごとに保存する必要がある。

・データベースの中にデータの種類ごとの保存場所が、テーブル

・テーブルとは、データベース内に作成される、データを表形式で収納する場所。目的に沿ったテーブルが用意されている。

・行は「レコード」、列は「カラム」と表現する。

・テーブルを管理する役割が、モデル

MVCの役割の1つ。データーベースへのアクセスをはじめとする情報のやり取りに関する処理を担当している。

・モデルがあれば、データベースにあるテーブルを、railsで管理できるようになる。テーブルごとに整理された情報はモデルに対応している。

・rails g model コマンド

モデルやそれに付随するファイルを一度に作成してくれるコマンド。

% rails g model モデル名

モデルの命名規則:単数形を使用
(コントローラー名は複数形)

→ app/models/モデル名.rb と、db/migrate/ディレクトリ内にマイグレーションが作成される。

・どのようなテーブルにするのかを決める、マイグレーション

マイグレーションファイルを記述して、(アプリに付随する)データーベースのテーブルに情報を反映する
・・・モデルは1つのテーブルを管理する場合が多い

デフォルトのマイグレーション
作成するカラムとそのを、changeメソッドの中で指定する。

class CreatePosts < ActiveRecord::Migration[6.0]
 def change
   create_table :posts do |t|

     t.timestamps
   end
 end
end

create_table :posts do |t|:「実際にpostsテーブルを作成する」

・・・ t.に続くのがカラムの型、右側にシンボルで記載されるものがカラム名

カラムの型  説明       用途
integer    数値                         金額、回数など
string    文字(短文)                 ユーザー名、メールアドレスなど
text     文字(長文)                 投稿文、説明文など
boolean   真か偽か                    選択、フラグ、既読未読など(○×)datetime   日付と時刻               作成日時、更新日時など
class CreatePosts < ActiveRecord::Migration[6.0]
 def change
   create_table :posts do |t|
     t.text :memo            # t.カラム シンボル
     t.timestamps
   end
 end
end

・データーベースの変更を行うために、テーブル情報を記入したマイグレーションファイルを実行する必要がある。

・rails db:migrate

マイグレーションに記述した内容をデーターベースに適用するためのコマンド。

・rails db:rollback

マイグレーション実行による変更を差し戻すためのコマンド。
ロールバック→修正→マイグレートで修正ができる。

・rails db:migrate:status

マイグレーションが実行済みであるかをファイルごとに調べるコマンド。
statusがUPで、マイグレーションが反映されている。
statusがDOWNで、マイグレーションが反映されていない(修正可能)。

2020/09/16

_____応用

・rails g migrationコマンド

マイグレーションを生成するコマンド。すでに作成されたテーブルを編集する際に使用。
(これまでマイグレーションは、rails g modelコマンドでモデルと一緒に生成されていた。)

rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型

テーブルにカラムを追加する際に必要なコードが記載された状態でマイグレーションが実行。

・スネークケースとキャメルケース

それぞれの単語の区切り方を表したもの。

スネークケース・・・単語の区切りをアンダースコアで表す
キャメルケース・・・単語の区切りを大文字で表す
キャメルケース・・・先頭が小文字で、単語の区切りを大文字で表す
例 adminUserCommentCreator
アッパーキャメルケース・・・先頭から単語の区切りを大文字で表す
例 AdminUserCommentCreator
スネークケース・・・単語の区切りをアンダースコアで表す
例 admin_user_comment_creator

rails の慣習的な命名規則として、

命名の対象                慣習的な命名規則
クラス名                  アッパーキャメルケース
メソッド名              スネークケース
変数名                     スネークケース
# usersテーブルにnicknameカラムをstring型で追加するマイグレーションファイルを作成
% rails g migration AddNicknameToUsers nickname:string

# 作成したマイグレーションを実行
% rails db:migrate

[Addカラム名To追加先テーブル] の[カラム名]の部分は、厳密なカラム名を入力する必要はない。

2020/09/24

_____応用

・・・tweetsテーブルから不要なカラムを削除する際、

% rails g migration Removeカラム名From削除元テーブル名 削除するカラム名:型

Removeカラム名From削除元テーブル名のカラム名の部分は、Addカラムの際と同様に必ずしも厳密なカラム名を入力する必要はない。

2020/09/25

次の記事(データを書き換える)

_____応用

・null: false

マイグレーションファイルにて

def change
   create_table :users do |t|
     ## Database authenticatable
     t.string :name,               null: false
     t.string :email,              null: false, default: ""
     t.string :encrypted_password, null: false, default: ""
     # 〜省略〜
end

・・・マイグレーション実行時に「nameカラム」に空の値を許可しないNOT NULL制約で作成。

2020/10/11

別テーブルのカラムを参照する「外部キー」を使用する際はreferencesを使用する。

・references型

Railsで外部キーのカラムを追加する際に、用いる型。
foreign_key: trueという制約を設けることで、他テーブルの情報を参照できる。

class CreateRoomUsers < ActiveRecord::Migration[6.0]
 def change
   create_table :room_users do |t|
     t.references :room, foreign_key: true
     t.references :user, foreign_key: true
     t.timestamps
   end
 end
end

2020/11/02

この記事が気に入ったらサポートをしてみませんか?