countというカラムをboardsテーブルにbigint型で指定する例です。
テーブル(モデル)作成時
$ rails g model Board count:integer
これだけですとint型になるだけなので作成したマイグレーションファイルを編集します。
class CreateBoards < ActiveRecord::Migration[5.0]
def change
create_table :boards do |t|
# limit: 8を追加
t.integer :count, limit: 8, null: false, default: 0
t.timestamps
end
end
end
カラム追加時
$ rails g migration AddCountToBoards count:integer
class AddCountToBoards < ActiveRecord::Migration[5.2]
def change
# limit: 8を追加
add_column :boards :count, :integer, limit: 8, null: false, default: 0
end
end
integer型に「limit: 8」という指定を追加する事でbigint型を使えるようになります。
念のため空を許さず(null: false)、デフォルト値を0(default: 0)にしています。
class CreateBoards < ActiveRecord::Migration[5.0]
def change
create_table :boards do |t|
# limit: 1を追加
t.integer :count, limit: 1, null: false, default: 0
t.timestamps
end
end
end
カラム追加時
class AddCountToBoards < ActiveRecord::Migration[5.2]
def change
# limit: 1を追加
add_column :boards :count, :integer, limit: 1, null: false, default: 0
end
end
同様に「 limit: 1」指定を行うとtinyintの指定ができます。
インデックスとは検索を早くするために索引を付けることです。
以下はboardsテーブルのcontentカラム、およびnameカラムの例となります。
追加するマイグレーションファイル名は
Addわかりやすい名前Toテーブル名
にすると良いと思います。
$ rails g migration AddIndexToBoards
作成したマイグレーションファイルには何も指定が記述されていないので以下を参考に、インデックスの指定を追加してください。
class AddIndexToBoards < ActiveRecord::Migration[5.2]
def change
# index追加
add_index :boards, :content
#index + ユニーク制限追加
add_index :boards, :content, unique: true
# index削除
remove_index :boards, :content
# 複合インデックス(nameカラムとcontentカラムの組み合わせの検索が早くなる)
add_index :boards, [:name, :content]
# 複合index削除
remove_index :boards, [:name, :content]
# 複合ユニーク制限>
add_index :boards, [:name, :content], :unique => true
end
end
インデックスの追加をしたらマイグレーションファイルを保存して実行してください。