はじめに
学習中の備忘録です。
概要
- カラムのデータ型一覧
- モデル作成時
- カラム追加
- カラム削除
- データ型変更
- カラム名変更
- モデル作成時(外部キー制約付)
- カラム追加時(外部キー制約付)
カラムデータ型一覧
データ型 | 型の種類 | 用途 |
---|---|---|
integer | 数字 | 金額、回数など |
string | 文字(短文) | ユーザー名、メールアドレスなど |
text | 文字(長文) | 投稿文など |
boolean | 真偽 | はい・いいえの選択肢など |
datetime | 日付と時刻 | 作成日時、更新日時など |
float | 浮動小数 | 小数点含む6桁までを丸めずに保存 |
decimal | 精度の高い少数 | 小数点以下桁数揃えて正確に保存 |
timestamp | より細かい日時 | より細かい日時 |
time | 時間 | 時間 |
date | 日付 | 日付 |
binary | バイナリデータ | バイナリデータ |
※floatとdecimalについて詳しくはこちら | ||
https://qiita.com/y-ken/items/b8601092d0261c3a556d | ||
※datetime,time,dateについて詳しくはこちら | ||
https://qiita.com/y-ken/items/b8601092d0261c3a556d |
前提
- rails 5.2.4.1
- コマンド入力はファイル名のみですのでファイルは編集してください。
モデル作成時
postモデルを作成。
rails g model post
migrationファイルを編集してpostsテーブルにpostカラムをstring型で作成。
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.string :post
t.timestamps
end
end
end
カラム追加
migrationファイル作成。
rails g migration AddTitleToPosts
postsテーブルにtitleカラムをstring型で追加。
class AddTitleToPosts < ActiveRecord::Migration[5.2]
def change
add_column :posts, :title, :string
end
end
カラム削除
migrationファイル作成。
rails g migration RemoveTitleFromPosts
postsテーブルのtitleカラムを削除。
class RemoveTitleFromPosts < ActiveRecord::Migration[5.2]
def change
remove_column :posts, :title, :string
end
end
データ型変更
migrationファイル作成。
rails g migration ChangeDatatypeNameOfPosts
postsテーブルのnameカラムをtext型に変更。
class ChangeDatatypeNameOfPosts < ActiveRecord::Migration[5.2]
def change
change_column :posts, :name, :text
end
end
#カラム名変更
migrationファイルを作成。
rails g migration RenameNameColumnToPosts
postsテーブルのnameカラムのカラム名をtitleに変更。
class RenameNameColumnToPosts < ActiveRecord::Migration[5.2]
def change
rename_column :posts, :name, :title
end
end
モデル作成時(外部キー制約付)
postsテーブルにuser_idという外部キー付のカラムを作成。
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
#~省略~
# user_idという名前で users.id への外部キー制約をはる
t.references :user, foreign_key: true
t.timestamps
end
end
end
カラム追加時(外部キー制約付)
postsテーブルにuser_idという外部キー付のカラムを作成。
class AddUserIdToPosts < ActiveRecord::Migration[5.2]
def change
#user_idという名前で users.id への外部キー制約をはる
add_reference :posts, :user, foreign_key: true
end
end
※foreign_key オプションを省略してしまうと、外部キー制約がはられません。
※indexを作りたくない場合はオプションで明示的に index: false を記述。
まとめ
今回は個人的に日頃使用するものでまとめました。
コマンド入力や外部キーについては参考記事にもっと詳しく書いてあります。
参考記事
https://qiita.com/dawn_628/items/13fa64dc6d600e921ce3
https://qiita.com/publichtml/items/1fba15d8071fab66d043