1.はじめに
・この記事は記載者の自己満足による物です。
・30分で完全に切り上げるために、完全に途中で切れても終わります!笑
(このはじめにを書くのは毎回テンプレとし、このコピペの時間帯は時間に入れないものとする。)
・間違えている可能性あり!!!あまりこの記事信用しないほうがいい気がする!笑
2.なんで始めようと思ったか?
・「時間がないから記事が書けない」を言い訳に書いていなかった自分を律するため
・「意味もない記事でもいいから30分で書いて、書く練習をしてみよう!そうすりゃアウトプットにもなる」と思ったため。
内容がなくともとにかく書こう。
・いいんですよ。中身すっからかんでも。練習になりゃぁ。
ってことで2025/2/19からスタート!!
30分アウトプット開始
ひとまず間違っていようがとにかく記載。
・・・さて何書こう? →今日の勉強の一部を書くか。
db/migrate/YYYYMMDDhhmmss_create_xxxx.rb に書いてある内容を復習。それしか思いつかん。
どう書くかなーとか思ってたらそれだけで時間が数分かかりそうなので、とにかくアウトプット。
class CreateXxxxxs < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
t.string :name, null: false
t.string :crypted_password
t.integer :role, default: 0
t.timestamps
t.datetime :deleted_at
t.index :name
t.index :deleted_at
end
end
class CreateYyyyyys < ActiveRecord::Migration[5.2]
create_table :Yyyys do |t|
t.string :name, null: false
t.references :record, null: false, polymorphic: true, index: false
t.datetime :created_at, null: false
t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
end
end
基本的にMigrateファイルを追加する場合の一つとして、
Classには「CreateXxxxxs < ActiveRecord::Migration[5.2] 」となり、
テーブル名が「Xxxxxs」になる。(Yyyyy)も同じ。
その下には「def change」があり、
「create_table :users do |t| 」で「users」とするテーブルを作成し、tという名前に省略するよ。と言った意味で書いてある。
基本的には
「t.xxxxx :カラム名, 条件」で記載していく。
xxxxxに当たる部分を書いていくと、
string :文字列
text :文字列(stringより、より多くの文字列を記載可能。詳細は割愛)
integer :整数(32bit 2の31乗 ※頭の01は正負を表す 4桁の頭で言うと→「0」000)
bigint :整数(32bit 2の63乗 ※頭の01は正負を表す 4桁の頭で言うと→「0」000)
datetime :日付
references :1対多で、このテーブルが多の時に使う。上記のコードだとt.references :recordだね。
別枠)
index :stringとかで設定したカラムを検索しやすく並べ替える。そのため検索しやすくしてくれる。
やばい残り15分。早いw
:カラム名 に当たる部分を書いていくと
基本的には3種類と考えていいかも?(コレで固めるのは頭硬いかもしれんけど)-
1 ::カラム名
(もうそのまんま。上にある「:name」とか「:role」とか。データベースに登録されるのもそのまんまと考えていいと思っている)
2 :t.referencesの場合。上にある「:record」とか「:blob」とか。
(
・このファイルに書くときは特に気にしなくてもいい。
・実際にこいつは、書いてあるrecordやblobってやつのテーブルから情報を持ってくるにあたって、そのテーブル情報のIDを持ってきている。そのため、ER図やデータベースで保存されるときは、基本的にinteger(数字)で登録されている認識。
・問題は、ER図に書くときやカラムに登録された時のカラム名は「Xxxxxx_id」と後ろに「_id」がつく。
)
3 :t.references :カラム名, の後にくる「polymorphic: true」
・こいつが入る行を見る。
t.references :record, null: false, polymorphic: true, index: false
→作られるカラムは「record_id」と「record_type」の2つ。
ポリモーフィックと呼ばれるやつで使うやつらしいけど、そこまではわからず。
とにかくこの二つを出すんだなーと。
(なんか1対多で相手のテーブルが1、自分が多、そのテーブルが複数あるのに関係あるっぽい?
とにかく引き続き勉強だー)
と言ったところかな。
最後に
def up:テーブル作成、カラム作成
def down:ロールバック用の削除するメソッド。
ここまで30分。しゅうりょーーーーーー