LoginSignup
3
1

More than 3 years have passed since last update.

[Rails]テーブルのカラム追加、型変更、型確認方法、カラムの型の種類

Posted at

こんな時

あ。追加でカラム欲しいな。
あ。型変更したいな。
カラムの型を簡単にさっと見たいな。
型っていっぱいあったよな、どれがなんだっけ。

記載事項

1.カラム追加方法
2.カラムの型変更方法
3.ターミナルでの型確認方法
4.カラムの型の種類(毎回ここにRails見に行ってるので、Qiitaに持ってきます。)

1.カラム追加方法

ターミナル
rails g migration Addカラム名Toテーブル名 カラム名:データ型

# postsテーブルにstart_timeカラムをtime型で追加
rails g migration AddStartTimeToPosts start_time:time

# マイグレーションファイルが作成される
# create    db/migrate/~~~_add_start_time_to_posts.rb

ファイルを編集。
他にもカラム追加したかったので追加。
null: falseもつけて、空のデータは保存不可にします。

~~~_add_start_time_to_posts.rb
class AddStartTimeToPosts < ActiveRecord::Migration[5.2]
  def change
    add_column :posts, :start_time, :time, null: false
    add_column :posts, :end_time, :time, null: false
    add_column :posts, :golf_place, :string
    add_column :posts, :min_member, :integer, null: false
    add_column :posts, :max_member, :integer, null: false
  end
end

rails db:migrateして終了!!

ターミナル
rails db:migrate

2.カラムの型変更方法

ターミナル
rails g migration change_data_カラム名_to_テーブル名

# postsテーブルのdateカラムの型を変更
rails g migration change_data_date_to_posts

# マイグレーションファイルが出来る
# db/migrate/~~~_change_data_date_to_posts.rb

マイグレーションファイルを編集します。

~~~_change_data_date_to_posts.rb
# change_column :posts, :カラム名, :型
# dateカラムをdate型に変更したかったのです。

class ChangeDataDateToPosts < ActiveRecord::Migration[5.2]
  def change
    change_column :posts, :date, :date
  end
end

rails db:migrateして終了!!

ターミナル
rails db:migrate

3.カラムの型確認方法

ターミナルでコンソールを使います。

ターミナル
rails c
ターミナル
# モデル名.columns_hash['カラム名'].type

pry(main)> Post.columns_hash['date'].type
=> :date

dateカラムはdate型と確認出来ましたね。

4.カラムの型一覧

最後にカラムの型一覧です。

[カラムの型]
- データ方 説明
- string 文字列
- text 長い文字列
- integer 整数
- float 浮動小数
- decimal 精度の高い小数
- datetime 日時
- timestamp より細かい日時
- time 時間
- date 日付
- binary バイナリデータ
- boolean Boolean型

元ソース Rails

ありがとうございました!!

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